相关疑难解决方法(0)

可以将多少数据作为命令行参数传递?

在Linux下生成进程时,可以作为命令行参数发送多少字节?

linux command-line-arguments

4
推荐指数
2
解决办法
850
查看次数

Python'sys.argv'是否限制了最大参数数量?

我有一个需要处理大量文件的Python脚本.为了解决上可以传递给命令的参数个数Linux的规模相对较小的限制,我使用find -print0带xargs -0.

我知道另一种选择是使用Python的glob模块,但是当我有一个更高级的find命令,寻找修改时间等时,这将无济于事.

在大量文件上运行我的脚本时,Python只接受参数的一个子集,这是我首先想到的限制argparse,但似乎是在sys.argv.我找不到任何关于此的文件.这是一个错误吗?

这是一个Python脚本示例,说明了这一点:

import argparse
import sys
import os

parser = argparse.ArgumentParser()
parser.add_argument('input_files', nargs='+')
args = parser.parse_args(sys.argv[1:])

print 'pid:', os.getpid(), 'argv files', len(sys.argv[1:]), 'argparse files:', len(args.input_files)
Run Code Online (Sandbox Code Playgroud)

我有很多文件可以运行:

$ find ~/ -name "*" -print0 | xargs -0 ls > filelist
748709 filelist
Run Code Online (Sandbox Code Playgroud)

但看起来xargs或Python正在分解我的大文件列表并使用几个不同的Python运行处理它:

$ find ~/ -name "*" -print0 | xargs -0 python test.py
pid: 4216 argv files 1819 number of files: 1819
pid: 4217 argv …
Run Code Online (Sandbox Code Playgroud)

python xargs argv argparse

3
推荐指数
1
解决办法
3175
查看次数

对于sys.argv中的fi [1:]:参数列表太长了

我试图在文件夹中的所有文本文件上执行python脚本:

for fi in sys.argv[1:]:
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

-bash: /usr/bin/python: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我称之为Python函数的方式如下:

python functionName.py *.txt
Run Code Online (Sandbox Code Playgroud)

该文件夹有大约9000个文件.有没有办法运行此功能,而不必将我的数据拆分到更多的文件夹等?拆分文件不太实用,因为我将来必须在更多文件中执行该功能...谢谢

编辑:根据选定的正确回复和回复者(Charles Duffy)的评论,对我有用的是:

printf '%s\0' *.txt | xargs -0 python ./functionName.py
Run Code Online (Sandbox Code Playgroud)

因为我没有有效的shebang ..

python bash arguments argv

2
推荐指数
1
解决办法
4869
查看次数