假设我有一个简单的Hello_World.py脚本,它将编写一个文本文件,内容是hello world。
import csv,sys
def main(fname):
with open(fname, 'w') as f:
writer = csv.writer(f)
writer.writerow(['Hello World'])
if __name__ == '__main__':
fname = sys.argv[1]
main(fname)
我可以在特定python环境的命令提示符下使用
C:\Users\user\Anaconda3\envs\test\python.exe D:\Scripts\hello_world.py D:\Data\test.txt
但是,我如何从另一个Python版本中执行同一行代码,例如使用子进程模块?即,以下返回非零退出状态1。
subprocess.check_call([r'C:\Users\user\Anaconda3\envs\test\python.exe',r'D:\Scripts\hello_world.py', r'D:\Data\test.txt'])
当然不是最优雅的方法,但不幸的是,我需要在不同的python版本上运行脚本。考虑到调用python.exe也会失败,似乎在调用python.exe时出现了某种错误
os.system(r'C:\Users\user\Anaconda3\envs\test\python.exe')
2条答案
按热度按时间kyxcudwk1#
如果没有更多的信息,就不可能知道脚本中到底出了什么问题(对我来说似乎运行得很好?)。要获得有关正在发生的事情的更多详细信息,您应该尝试访问进程
stdout
和stderr
流,如注解中所建议的那样。这可以使用类似以下脚本的东西来实现:
j1dl9f462#
问题已解决。我没有权限访问指定的C文件夹。为什么subprocess.CalledProcessError函数没有抛出权限错误,我不知道。