subprocess.call路径问题,如何解决?
subprocess.call path problem , how to fix?
我的 subprocess.call 问题是我的快捷方式目标是额外的 INI 文件,它是 LIV2.INI 而我的 exe 文件应该 运行 。我的快捷方式目标 link 看起来像这样
"C:\Program Files (x86)\AMO\EXE\PROGRAM LIVE 2.exe" LIV2.INI
我试过了
subprocess.call('"C:\Users\admin\Desktop\PROGRAM LIVE 2.exe" LIV2.INI')
我试过了
subprocess.call('C:\Users\admin\Desktop\PROGRAM LIVE 2.exe LIV2.INI')
我仍然收到 ini 文件丢失的错误消息?我该如何解决这个问题:)
提前致谢
错误:INI 文件丢失或名称错误
还请编辑您的问题以实际包含错误,因为您会收到语法错误,而不是 ini 文件丢失的错误。
这里有两个问题,首先是语法错误,因为 "\Us"
不是 python 中的有效字符串。 \u
标记 Unicode 转义序列的开始,字符 S 不是有效的 Unicode 转义键。您可以通过使用双 \
来转义 \
字符并告诉 python 您希望您的字符串包含 \
而不是将其用作转义的开始来解决此问题顺序。
其次,subprocess.call
excpects 一个列表,而不是一个字符串(除非你设置 shell=True
;但不要这样做,因为这意味着你必须手动转义你已经发现的东西很难)。列表的第一个元素
是 运行 的可执行文件,其余是命令行参数。例如,如果您想 运行 python
e 并打印“hello world”,您可以输入:
subprocess.call(['python', '-c', 'print ("hello world")'])
注意到 python 字符串周围缺少引号了吗?您不需要这些,因为命令行参数是原始传递的,如果您不包含引号,shell 将不会尝试拆分它们。
把它们放在一起会产生这样的东西:
subprocess.call(['C:\Users\admin\Desktop\PROGRAM LIVE 2.exe', 'LIV2.INI'])
注意双反斜杠以及每个命令行参数如何成为它自己的列表元素。
我的 subprocess.call 问题是我的快捷方式目标是额外的 INI 文件,它是 LIV2.INI 而我的 exe 文件应该 运行 。我的快捷方式目标 link 看起来像这样
"C:\Program Files (x86)\AMO\EXE\PROGRAM LIVE 2.exe" LIV2.INI
我试过了
subprocess.call('"C:\Users\admin\Desktop\PROGRAM LIVE 2.exe" LIV2.INI')
我试过了
subprocess.call('C:\Users\admin\Desktop\PROGRAM LIVE 2.exe LIV2.INI')
我仍然收到 ini 文件丢失的错误消息?我该如何解决这个问题:)
提前致谢
错误:INI 文件丢失或名称错误
还请编辑您的问题以实际包含错误,因为您会收到语法错误,而不是 ini 文件丢失的错误。
这里有两个问题,首先是语法错误,因为 "\Us"
不是 python 中的有效字符串。 \u
标记 Unicode 转义序列的开始,字符 S 不是有效的 Unicode 转义键。您可以通过使用双 \
来转义 \
字符并告诉 python 您希望您的字符串包含 \
而不是将其用作转义的开始来解决此问题顺序。
其次,subprocess.call
excpects 一个列表,而不是一个字符串(除非你设置 shell=True
;但不要这样做,因为这意味着你必须手动转义你已经发现的东西很难)。列表的第一个元素
是 运行 的可执行文件,其余是命令行参数。例如,如果您想 运行 python
e 并打印“hello world”,您可以输入:
subprocess.call(['python', '-c', 'print ("hello world")'])
注意到 python 字符串周围缺少引号了吗?您不需要这些,因为命令行参数是原始传递的,如果您不包含引号,shell 将不会尝试拆分它们。
把它们放在一起会产生这样的东西:
subprocess.call(['C:\Users\admin\Desktop\PROGRAM LIVE 2.exe', 'LIV2.INI'])
注意双反斜杠以及每个命令行参数如何成为它自己的列表元素。