2012-07-06 56 views
-2

好吧,使用Python与Windows我想运行一个批处理命令,这是“移动”命令来移动文件。我知道它可以在python中使用shutil来完成,但它给我带来了麻烦。为什么我的python子进程不能使用移动命令?

move /-y "%~dp0itself.py" "C:\folder\folder2\" 

单独作为批处理文件运行时,它可以很好地工作。

import subprocess 
    process = subprocess.Popen(move /-y "%~dp0sarpedon.py" "C:\Utility\Config\", shell=True, stdout=subprocess.PIPE) 
process.wait() 
print process.returncode 

我尝试添加,要在蟒蛇一些其他的代码结束,但我不断收到错误,它说我有因为在

"%~dp0sarpedon.py (") 

了很多尝试的结束无效的语法我用它来修复它与错误结束:

EOL while scanning string literal. 

因为右括号

(move /-y "%~dp0sarpedon.py" "C:\Utility\Config\", shell=True, stdout=subprocess.PIPE ")" 

我该如何解决这个问题?

+0

你可能想用echo命令来练习这个字符串在[tutorial](http://docs.python.org/tutorial/introduction.html)和[library reference](http://docs.python.org/library/stdtypes.html#sequence- (典型值) es-str-unicode-list-tuple-bytearray-buffer-xrange) – SiggyF 2012-07-06 19:02:10

回答

0

你能说明shutil给了什么麻烦吗?你忘了双反斜杠吗?或者文件或目录是否需要管理员权限?

以下是否导致错误?

import shutil 
shutil.move("%~dp0itself.py", "C:\\folder\\folder2") 

在我的64位Windows机器上运行使用此行移动文件。至于为什么你的代码不工作 - 我认为它是因为\“,尝试使用双反斜杠\,或者字符串解释器不会结束字符串,或者它会创建一些奇怪的字符到位。

的所有分离的尝试与移动和目的地命令组合的字符串下面,如果你投入使用子:

import subprocess 
process = subprocess.Popen("move /-y %~dp0sarpedon.py C:\\Utility\\Config\\", 
          shell=True, stdout=subprocess.PIPE) 
1

您需要阅读Popen工作原理的文档。你不能只在你的命令行中放置括号。您必须将该命令及其参数作为字符串传递给列表。阅读the documentation

+0

谢谢,实际上帮了很多! – harry 2012-07-06 19:00:54