subprocess.call() in windows 10 returns an error that it can't find the file
我正在编写一个Unix脚本,在Windows10下工作需要一些调整。脚本使用子进程使用DOS命令执行文件操作。具体来说,使用子进程将文件从目录复制到当前目录的语句将返回错误消息。正确的DOS命令是
1 | copy"D:\tess\catalog files\TIC55234031.fts" . |
然而,
1 | ref_fits_filename="D:\TESS\catalog files\TIC55234031.fts" |
和
1 | subprocess.call(['copy ', ref_fits_filename,' .']) # copy the ref fits file to here |
其目的是执行完全相同的操作,但出现了错误:
1 2 3 4 5 6 7 8 9 10 | Traceback (most recent call last): File"EBcheck.py", line 390, in subprocess.call(['copy ', ref_fits_filename,' .']) # copy the ref fits file to here File"C:\Users\FD-Computers\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 267, in call with Popen(*popenargs, **kwargs) as p: File"C:\Users\FD-Computers\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 709, in __init__ restore_signals, start_new_session) File"C:\Users\FD-Computers\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 997, in _execute_child startupinfo) FileNotFoundError: [WinError 2] Het systeem kan het opgegeven bestand niet vinden |
显然,一定有一个微妙的语法错误或者一个我没有想到的问题导致了这个问题。有没有在Windows10下进行python编程的专家来澄清这个论坛上的问题?这里使用的python版本是最新的python 3.6.4。
原因很多:
所以你可以这样做:
1 | subprocess.call(['copy', ref_fits_filename,'.'],shell=True) |
但是,最可能的方法是放弃所有这些,使用
1 2 | import shutil shutil.copy(ref_fits_filename,".") |
另外,如果拷贝出错,您将得到一个干净的python异常。
旁白:将Windows路径定义为文本时始终使用原始前缀:
1 | ref_fits_filename = r"D:\tess\catalog files\TIC55234031.fts" |
(我猜你把