我尝试从cmd执行一个简单的python命令,比如C:\Users> stat.py < swagger.yaml > output.html
,它执行统计数据通过采取招摇过市.yaml作为输入参数并生成输出.html它在cmd中运行良好。但现在我要执行我的命令统计数据通过另一个python文件演示.py通过传递值招摇过市.yaml以及输出.html作为系统argv[0]和系统argv[1] 内部演示.py. 你知道吗
来自cmdC:\Users> demo.py swagger.yaml output.html
的我的命令和我的演示.py文件如下。。你知道吗
# my demo.py file ....
import os
import sys
os.system('stat.py < sys.argv[1] > sys.argv[2]')
错误-系统找不到指定的文件。
为什么我得到这个错误,请任何帮助解决它。。你知道吗
在普通字符串中,不应用变量解释。因此,您实际上要求从名为
sys.argv[1]
的文件(如果该文件存在,可能是sys.argv1
,这要感谢shell globbing),读取并写入名为sys.argv[2]
的文件。你知道吗如果要在脚本中使用值
sys.argv
,则需要将它们格式化为字符串,例如使用f-strings(仅限现代Python 3.6或更高版本):或者在旧版Python2.7上,使用
str.format
:请注意,无论您如何分割它,这都是危险的;
os.system
在shell中启动它,并且包含shell元字符的参数将被解释为这样。它不能做用户没有权限做的任何事情,但是用户的小错误可以极大地改变程序的行为。如果要正确/安全地执行此操作,请使用subprocess
,自己打开文件,并以stdin
/stdout
的形式显式传递它们:这样可以确保在启动进程之前首先打开文件,不允许shell解释任何内容,并且完全避免了启动shell的(小)开销。如果打开文件失败,它还会给您带来更多有用的错误。你知道吗
相关问题 更多 >
编程相关推荐