【发布时间】:2021-12-03 19:05:17
【问题描述】:
我正在尝试调试一个将命令行参数作为输入的脚本。参数是同一目录中的文本文件。脚本从 sys.argv 列表中获取文件名。我的问题是我无法在 pycharm 中启动带有参数的脚本。
我尝试在“运行”>“编辑配置”菜单中的“脚本参数”字段中输入参数,如下所示:
-s'file1.txt', -s'file2.txt'
但它没有工作。如何使用参数启动我的脚本?
附:我在 Ubuntu 上
【问题讨论】:
我正在尝试调试一个将命令行参数作为输入的脚本。参数是同一目录中的文本文件。脚本从 sys.argv 列表中获取文件名。我的问题是我无法在 pycharm 中启动带有参数的脚本。
我尝试在“运行”>“编辑配置”菜单中的“脚本参数”字段中输入参数,如下所示:
-s'file1.txt', -s'file2.txt'
但它没有工作。如何使用参数启动我的脚本?
附:我在 Ubuntu 上
【问题讨论】:
在 PyCharm 中,参数像您一样添加到 Script Parameters 中,但是 它们用双引号括起来 "" 并且没有指定像 @ 这样的解释器标志987654325@。这些标志在 Interpreter options 框中指定。
脚本参数框内容:
"file1.txt" "file2.txt"
Interpeter 标志:
-s
或者,视觉上:
然后,用一个简单的测试文件来评估:
if __name__ == "__main__":
import sys
print(sys.argv)
我们得到我们提供的参数(sys.argv[0]当然是脚本名):
['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']
【讨论】:
script parameters
Script parameters 选项。
Parameters,您不必在参数周围加上双引号。
除了 Jim 的回答(抱歉,没有足够的代表点来发表评论),只是想指出 PyCharm 中指定的参数确实 not 有特殊字符转义,不像你会做的那样在命令行上。所以,虽然在命令行上你会这样做:
python mediadb.py /media/paul/New\ Volume/Users/paul/Documents/spinmaster/\*.png
PyCharm 参数为:
"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"
【讨论】:
第一个参数是您要运行的脚本的名称。从第二个参数开始,它是您要从命令行传递的参数。下面是一个测试脚本:
from sys import argv
script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second
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
我花了一些时间才弄清楚输入参数是逗号分隔的。
【讨论】:
请注意,由于某些未知原因,无法在 PyCharm Edu 版本中添加命令行参数。它只能在专业版和社区版中完成。
【讨论】:
我相信它甚至包含在 Edu 版本中。只需右键单击实心绿色箭头按钮(运行)并选择“添加参数”。
【讨论】:
将以下内容添加到 Python 文件的顶部。
import sys
sys.argv = [
__file__,
'arg1',
'arg2'
]
现在,您只需右键单击 Python 脚本即可。
【讨论】:
在 PyCharm 社区版或专业版 2019.1+ 上:
file2.txt file3.txt 或 --myFlag myArg --anotherFlag mySecondArg)【讨论】:
在 PyCharm 的编辑配置中,当您将参数作为字符串提供时,您不应使用 ''(这些引号)来提供输入。
代替-s'file1.txt', -s'file2.txt' 只需使用:
-s 文件1.txt, -s 文件2.txt
【讨论】: