【问题标题】:executing the python in another python file with arguments as path在另一个 python 文件中执行 python,参数为路径
【发布时间】:2017-05-10 22:06:14
【问题描述】:

我对 python 比较陌生。我试图在另一个文件"main.py" 中调用一个python 文件"plotting.py"。要执行"plotting.py" 文件,还应将路径作为参数给出。

所以在"main.py"我已经这么执行了

z='Stream 20170424 15_20_25_856' os.system('python plotting.py '+z)

变量z 是文件夹的名称,这个名称通常包含空格,当我执行"main.py" 时会出错。但是,当我用_ 替换文件夹名称中的空格并相应地更改变量z 并执行"main.py" 时,它的执行没有错误。但我不能每次都更改文件夹的名称。那么是否有可能执行代码更改文件夹名称并提供变量z 提到的?

【问题讨论】:

  • 最好不要在文件夹名称中使用空格...
  • 使用 subprocess.call 和 args 列表让它为你处理报价。但是,如果它与“main.py”相关,则不应依赖工作目录来查找“plotting.py”。工作目录和脚本目录不是一回事。

标签: python windows python-2.7


【解决方案1】:

如果您确实不想删除文件夹名称中的空格,请将反斜杠 \ 放在变量 z 中的空格之前,以分隔它们。

【讨论】:

    【解决方案2】:

    由于您将 python 作为命令行程序调用,您可以尝试在您传递的参数周围添加引号,以便它将您的空格字符串视为一个参数。在运行这样的命令时,如果您没有引号,它会将每个空格分隔的字符串视为脚本的单独参数,这就是 _ 为您工作的原因。因此,当您希望它只是 1 个参数时,您当前的代码将“Stream”、“20170424”和“15_20_25_856”作为 3 个单独的参数传递给 plotting.py。

    试试

    os.system("python plotting.py '"+z + "'") 
    

    【讨论】:

    • 我的意思更多的是他将它作为命令行程序运行,而不是它特定于 os.system。此外,如果他试图将这样的参数传递给任何命令行程序而不仅仅是 python,这将是一个问题。
    • 一般来说是对的,但在 Windows 上它取决于程序。 Windows 程序获取原始命令行字符串,如何解析它取决于它们。在一般情况下,据我们所知,程序可能需要使用像☺Stream 20170424 15_20_25_856☺ 这样的笑脸来引用路径。 ;-) 但说真的,根据创建argv 的 VC++ 规则,它应该是双引号,而不是单引号。
    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多