【发布时间】:2018-09-16 16:27:02
【问题描述】:
我正在编写一个 unix 脚本,该脚本需要一些修改才能在 Windows 10 下工作。该脚本使用子进程使用 DOS 命令执行文件操作。具体来说,使用 subprocess 将文件从目录复制到当前目录的语句会返回错误消息。 正确的DOS命令是
copy "D:\tess\catalog files\TIC55234031.fts" .
然而,
ref_fits_filename="D:\TESS\catalog files\TIC55234031.fts"
和
subprocess.call(['copy ', ref_fits_filename,' .']) # copy the ref fits file to here
旨在执行完全相同的操作,出错了:
Traceback(最近一次调用最后一次):
文件“EBcheck.py”,第 390 行,在
subprocess.call(['copy ', ref_fits_filename,' .']) # 复制 ref 拟合文件到这里
文件“C:\Users\FD-Computers\AppData\Local\Programs\Python\Python36\lib\subprocess.py”,第 267 行,调用中
使用 Popen(*popenargs, **kwargs) 作为 p:
文件“C:\Users\FD-Computers\AppData\Local\Programs\Python\Python36\lib\subprocess.py”,第 709 行,在 __init__
恢复信号,开始新会话)
_execute_child 中的文件“C:\Users\FD-Computers\AppData\Local\Programs\Python\Python36\lib\subprocess.py”,第 997 行
启动信息)
FileNotFoundError: [WinError 2] 系统找不到指定的文件
显然,一定有一个微妙的语法错误或我没有想到的问题导致了问题。 Windows 10下的Python编程专家是否在这个论坛上澄清了这个问题? 这里使用的 Python 版本是最近的 Python 3.6.4。
【问题讨论】:
-
copy是 shell 内置的。为此,您需要shell=True。另外,您的副本 arg 中有一个空格。
标签: python python-3.x subprocess