Pycharm和sys.argv参数


89

我正在尝试调试将命令行参数作为输入的脚本。参数是同一目录中的文本文件。脚本从sys.argv列表中获取文件名。我的问题是我无法使用pycharm中的参数启动脚本。

我试图在“运行”>“编辑配置”菜单的“脚本参数”字段中输入参数,如下所示:

-s'file1.txt', -s'file2.txt'

但这没有用。如何使用参数启动脚本?

PS我在Ubuntu上

Answers:


107

在PyCharm中,Script Parameters像您一样在参数中添加参数,但是参数用双引号引起来, ""并且没有指定解释器标志,例如-s。这些标志在Interpreter options框中指定。

脚本参数框内容:

"file1.txt" "file2.txt"

插入者标志:

-s

或者,在视觉上:

在此处输入图片说明

然后,用一个简单的测试文件进行评估:

if __name__ == "__main__":
    import sys
    print(sys.argv)

我们获得提供的参数(sys.argv[0]当然保留脚本名称):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']

谢谢工作。另外,事实证明,我应该使用“”引号而不是“”。
YKY 2015年

3
这很有帮助;但为了澄清起见,我的python脚本使用两个文件名作为参数,一个用于-r,一个用于-s(或两者或一个或都不是)。因此,我的脚本参数被指定为[-p“ prof_samples.txt” -r“ resp_samples.txt”],没有解释器选项。
哈里

2
我认为这个答案已经过时,因为没有答案script parameters
tisaconundrum

@tisaconundrum检查之后,您能告诉我您正在运行哪个版本的PyCharm吗?我刚刚下载了最新版本(PyCharm社区版2017.2.3 Build#PC-172.3968.37,建于2017年9月1日),仍然看到了该Script parameters选项。
Dimitris Fasarakis Hilliard

添加参数值后,单击“应用”或“确定”按钮不运行代码。如果我保存配置并运行代码,Pycharm python代码中仍未考虑参数
Praveen L

75

为了其他人,他们想知道如何进入此窗口。就是这样:

您可以通过单击Select Run/Debug Configurations(位于的左侧在此处输入图片说明)并转到来访问它Edit Configurations。为清楚起见提供了一个gif。

在此处输入图片说明


1
短片实际上很有帮助-谢谢!那就是我讨厌gui东西的原因。它就像复活节彩蛋狩猎,而您只需在命令行中键入它
即可。– Shanemeister

这比最好的最好的方法更有帮助。谢谢!
Aakash Basu

12

在PyCharm Community或Professional Edition 2019.1+上

  1. 在菜单栏中单击运行->编辑配置
  2. 在参数中添加参数文本框中(例如file2.txt file3.txt--myFlag myArg --anotherFlag mySecondArg
  3. 请点击 应用
  4. 点击确定

11

除了Jim的答案(对不起,代表点不足以发表评论),我只想指出PyCharm中指定的参数没有转义特殊字符,这与您在命令行中所做的不同。因此,在命令行上,您需要执行以下操作:

python mediadb.py  /media/paul/New\ Volume/Users/paul/Documents/spinmaster/\*.png

PyCharm参数为:

"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"

5

请注意,由于某些未知原因,无法在PyCharm Edu版本中添加命令行参数。只能在专业版和社区版中完成。


3

第一个参数是要运行的脚本的名称。从第二个参数开始,它是您要从命令行传递的参数。下面是一个测试脚本:

from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second

这是您传递输入参数的方式:“脚本路径”,“第一个参数”,“第二个参数”

可以说,脚本的路径是/home/my_folder/test.py,输出将类似于:

Script is /home/my_folder/test.py
first is First Parameter
second is Second Parameter

希望这会有所帮助,因为我花了一些时间弄清楚输入参数是逗号分隔的。


2

将以下内容添加到Python文件的顶部。

import sys

sys.argv = [
    __file__,
    'arg1',
    'arg2'
]

现在,您只需右键单击Python脚本即可。


1

我相信它甚至包含在Edu版本中。只需右键单击绿色实心箭头按钮(运行),然后选择“添加参数”。


1

它对我来说是edu版本。对我来说,没有必要在解释器选项中指定-s选项。

使用命令行运行的Pycharm参数

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.