Python 'sys.argv' 的最大参数数量有限制吗?

2023-12-27

我有一个Python脚本需要处理大量文件。为了解决 Linux 对可传递给命令的参数数量相对较小的限制,我使用find -print0 with 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)

我有很多文件要运行它:

$ find ~/ -name "*" -print0 | xargs -0 ls > filelist
748709 filelist

但看来xargs http://en.wikipedia.org/wiki/Xargs或者 Python 正在对我的大文件列表进行分块,并使用几个不同的 Python 运行来处理它:

$ find ~/ -name "*" -print0 | xargs -0 python test.py
pid: 4216 argv files 1819 number of files: 1819
pid: 4217 argv files 1845 number of files: 1845
pid: 4218 argv files 1845 number of files: 1845
pid: 4219 argv files 1845 number of files: 1845
pid: 4220 argv files 1845 number of files: 1845
pid: 4221 argv files 1845 number of files: 1845
...

为什么要创建多个进程来处理该列表?为什么它会被分块呢?我认为文件名中没有换行符,也不应该-print0 and -0处理这个问题吗?如果有换行符,我希望sed -n '1810,1830p' filelist以显示上面示例的一些奇怪之处。是什么赋予了?

我差点忘了:

$ python -V
Python 2.7.2+

xargs默认情况下会分块你的参数。看看--max-args and --max-chars的选项xargs。它的手册页还解释了限制(在--max-chars).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 'sys.argv' 的最大参数数量有限制吗? 的相关文章

随机推荐

  • %CPU 列和负载在顶部

    我的一个 C 应用程序在顶部显示非常高的 CPU 但负载却相当低 myapp 总是占用 30 左右 显示在 top 命令的最顶部 但负载总是像 0 00 所以我很困惑负载和 CPU 列之间有什么区别 top 14 09 54 up 62 d
  • Jetpack Compose BottomNavBar 标签重叠 图标

    我试图实现 jetpack compose 底部导航栏 但我遇到了这个问题 每当标签没有足够的空间时 它就会与图标重叠 我错过了什么吗 有没有自动截断或缩小文本之类的解决方案 compose version 1 0 0 beta09 My
  • pyinstaller-frozen .exe 的“tcl\encoding\ascii.enc 无法提取” - Windows

    使用 pyinstaller 冻结为 exe 的 Python 2 7 脚本已在许多不同 Windows 网络上的许多用户成功运行了几个月 今天早上 一个 Windows 网络上的一组用户 并且只有这三个用户 并且只有这个办公室 之前已成功
  • JavaScript Cookie

    我有该域的 cookie forum mywebsite com并为 mywebsite com 是否可以读取 cookie mywebsite com带有 javascript 的域forum mywebsite com地点 是的 你应该
  • 在控制台中收到大量“内容安全策略”警告 (Firefox)

    我正在使用 Firefox 并且在控制台中收到很多 内容安全策略 警告 包括 内容安全策略 页面的设置阻止加载内联资源 script src and 内容安全策略 忽略 script src 或 style src 中的 unsafe in
  • 如何在 Go 中发送带附件的电子邮件

    我找到了这个库 并设法在空电子邮件中发送附件 但没有合并文本和附件 https github com sloonz go mime message https github com sloonz go mime message 如何做呢 我
  • Android 应用程序可以将自己呈现为(虚拟)Matter 设备吗?

    是否可以创建一个将自身呈现为 Matter 设备的 Android 应用程序 例如温度计 有示例代码吗 Android 应用程序可能无法做到这一点 因为它无法始终按需监听外部通信 您可以寻找在 Android 系统上运行本地服务器并以这种方
  • 如何控制 Android 工具栏中的菜单位置

    我想改变 android xml 代码中膨胀菜单项的重力 但我找不到任何属性来解决问题 我想要其中的一个项目left侧面和另一个项目right角的一侧在Toolbar 你们有什么想法吗 这是我现在的状态 这是我的菜单 xml menu me
  • rstudio 到命令行 R 的不同库路径 (`$R_LIBS_USER`)

    我正在尝试找出为什么我的 libPath命令行 R 和 RStudio 之间的不同Desktop 注 这是not的副本这个问题 https stackoverflow com questions 7129213 r libpaths dif
  • 如何在 Haskell 的 GI-Gtk 中将 Widget 转换为 Label?

    我有这个示例代码 其中有一个包含 ListBoxRows 的 ListBox 而 ListBoxRows 又包含一个 Label 当我单击 ListBox 时 我得到一个 ListBoxRow 到目前为止 一切都很好 当我想与 ListBo
  • 类型错误:db.collection 不是函数,无法获取

    我正在尝试从中获取一些数据apiRoutes get resources productinfo name 我有这个错误 我不知道出了什么问题 还有apiRoutes get book title 似乎不起作用 我不知道我做错了什么 更新
  • CommandManager.RequerySuggested 如何工作?

    MSDN 仅指出 当 CommandManager 检测到可能改变命令执行能力的条件时发生 然而我似乎找不到任何关于它是如何工作的痕迹 我应该知道 避免什么等等 它只是监听输入吗 即 鼠标移动 按下按键等 我无法准确告诉你发生了什么事件Co
  • 添加到自定义 ActionLink 帮助程序扩展的 htmlAttributes

    我正在尝试创建 Html ActionLink HtmlHelper 的简单自定义版本 我想将一组额外的属性附加到传入的 htmlAttributes 匿名对象中 public static MvcHtmlString NoFollowAc
  • 选择中的 VBA Rows.Count

    我正在计算用户选择在操作按钮旁边的工作表顶部显示的行数 即按钮显示 生成电子邮件 旁边显示 已选择 x 个项目 由于每次选择更改时都会更新 因此我有以下代码 Private Sub Worksheet SelectionChange ByV
  • 如何获取多语言的维基百科页面?

    我怎样才能获得另一种语言的相同维基百科页面 例如我想获得日语页面 http en wikipedia org wiki Cloud http en wikipedia org wiki Cloud 结果是 http ja wikipedia
  • 释放 Windows 文件共享锁

    这个问题在工作中时不时就会出现 我们的构建机器可以通过普通的 Windows 文件共享访问其文件 如果有人远程浏览计算机上的文件夹 并将窗口打开过夜 则构建会失败 就像现在所做的那样 左侧打开的资源管理器窗口指向源树中的子文件夹之一 构建会
  • Rails 3 从另一个控制器渲染部分内容(错误:ActionView::MissingTemplate)

    我试图在 application html erb 的标头中包含登录名 用户名 密码 我收到此错误 Missing partial login with handlers gt rjs builder rhtml erb rxml loca
  • kafka-console-consumer 使用什么消费组

    当我像这样运行 kafka console consumer 时 bin kafka console consumer sh bootstrap server localhost 9092 topic test 它默认属于哪个消费群体 如果
  • SQL 获取未参与项目的姓名

    我想检索未参与 PostgreSQL 项目的人员姓名 我有一张名为employees和他们的names and ssn 我的第二张桌子叫做works on并包括ssn and project number ssn这里有一个foreign k
  • Python 'sys.argv' 的最大参数数量有限制吗?

    我有一个Python脚本需要处理大量文件 为了解决 Linux 对可传递给命令的参数数量相对较小的限制 我使用find print0 with xargs 0 我知道另一种选择是使用 Python 的 glob 模块 但是当我有更高级的模块