当前位置: 首页 > 面试题库 >

python sys.argv的局限性?

尉迟栋
2023-03-14
问题内容

假设我想运行这样的python脚本:python my_script.py MY_INPUT。在这种情况下,MY_INPUT将被传送到sys.argv[1]

可以包含的字符 是否有限制MY_INPUT

可以包含的字符 类型 是否有限制MY_INPUT

还有其他限制MY_INPUT吗?

更新: 我正在使用Ubuntu Linux 10.04


问题答案:

的大小argv受操作系统限制,并且因操作系统而异。引用Linux手册execve(2)页:

Limits on size of arguments and environment
   Most Unix implementations impose some limit on the total size
   of the command-line argument (argv) and environment (envp)
   strings that may be passed to a new program.  POSIX.1 allows an
   implementation to advertise this limit using the ARG_MAX
   constant (either defined in <limits.h> or available at run time
   using the call sysconf(_SC_ARG_MAX)).

   On Linux prior to kernel 2.6.23, the memory used to store the
   environment and argument strings was limited to 32 pages
   (defined by the kernel constant MAX_ARG_PAGES).  On
   architectures with a 4-kB page size, this yields a maximum size
   of 128 kB.

   On kernel 2.6.23 and later, most architectures support a size
   limit derived from the soft RLIMIT_STACK resource limit (see
   getrlimit(2)) that is in force at the time of the execve()
   call.  (Architectures with no memory management unit are
   excepted: they maintain the limit that was in effect before
   kernel 2.6.23.)  This change allows programs to have a much
   larger argument and/or environment list.  For these
   architectures, the total size is limited to 1/4 of the allowed
   stack size.  (Imposing the 1/4-limit ensures that the new
   program always has some stack space.)  Since Linux 2.6.25, the
   kernel places a floor of 32 pages on this size limit, so that,
   even when RLIMIT_STACK is set very low, applications are
   guaranteed to have at least as much argument and environment
   space as was provided by Linux 2.6.23 and earlier.  (This
   guarantee was not provided in Linux 2.6.23 and 2.6.24.)
   Additionally, the limit per string is 32 pages (the kernel
   constant MAX_ARG_STRLEN), and the maximum number of strings is
   0x7FFFFFFF.


 类似资料:
  • Selenium的局限性主要如下: Selenium不支持桌面应用程序的自动化测试。 Selenium需要高技能才能更有效地自动化测试。 由于Selenium是开源软件,因此您必须依靠社区论坛来解决技术问题。 无法使用Selenium对Web服务(如SOAP或REST)执行自动化测试。 使用者应该至少知道或熟悉一种受支持的编程语言,以便在Selenium WebDriver中创建测试脚本。 它没有

  • 当前版本的SystemTap提供的探测内核空间事件的众多选项,可以在不同版本的内核下使用。然而,SystemTap对探测用户空间事件的支持依赖于内核的支持(需要utrace机制),而多数内核缺乏这一支持。结果是,仅有部分内核上的SystemTap版本支持用户空间探测。 当前,SystemTap社区正集中力量改进SystemTap的用户空间探测能力。 (译注:本指南写于2013年。现今的内核普遍已经

  • 例如,考虑具有“see”功能的类“man”,以及不应该具有该功能的子类“blindman”,但应该具有“man”所具有的所有其他功能。 我能想出的唯一解决方案是拥有一个抽象类“man”,以及两个子类“seeingman”和“blindman”,其中SeeinMan添加了一个函数“see”。 然而,这个解决方案的问题是,如果我现在想添加一个“Deafman”类-它扩展了什么?看见人?如果那个人又聋又

  • 本文向大家介绍iOS 类别的局限性 ?相关面试题,主要包含被问及iOS 类别的局限性 ?时的应答技巧和注意事项,需要的朋友参考一下 有两方面局限性: (1)无法向类中添加新的实例变量,类别没有位置容纳实例变量。 (2)名称冲突,即当类别中的方法与原始类方法名称冲突时,类别具有更高的优先级。类别方法将完全取代初始方法从而无法再使用初始方法。 无法添加实例变量的局限可以使用字典对象解决

  • 我有一个由320个数组组成的数组,而常规的显示了包含所有嵌套元素的320个元素,Laravel的助手截断了索引147处的嵌套元素,并且截断了所有其他元素,没有扩展它们的选项,请参见下面的示例 为什么限制在147条全记录,如何提高限制?相关主题Laravels的DD助手函数是否正常工作?实际上并不能解释限制。 这是一个非常一致的行为,我已经用Laravel5.2和php7对其进行了测试 Linux(

  • 区块链技术在创建无信任的分散应用程序方面具有巨大潜力。但它并不完美。存在一些障碍使得区块链技术不是主流应用的正确选择和无法使用。 这此局限性包括: 缺乏意识 关于区块链的讨论很多,但是人们并不真正了解区块链的真正价值以及他们如何在不同情况下实施区块链。 有限的技术人才 今天,有很多开发人员可以做很多不同的事情,但在区块链中,只有少数开发人员拥有区块链技术方面的专业知识。因此,缺乏开发人员是阻碍在区

  • 本文向大家介绍MySQL ENUM的局限性是什么?,包括了MySQL ENUM的局限性是什么?的使用技巧和注意事项,需要的朋友参考一下 以下是MySQL ENUM的限制- 枚举值不能是表达式 我们甚至不能将表达式用作枚举成员,即使将其计算为字符串值也是如此。 示例 例如,我们甚至可以使用CONCAT函数来导致字符串的求值。 以下查询将不起作用- 无法将用户变量用作枚举成员 另一个限制是我们不能将用