我尝试使用Python运行以下命令行。第一个命令行总是可以工作,但第二个命令行不能,我不知道为什么。
import os, sys
os.system('IF EXIST C:\APC (echo 1) else (mkdir C:\APC)')
os.system('IF EXIST C:\APC\3d (echo 1) else (mkdir C:\APC\3d)')
如果有人知道答案,请告诉我们谢谢!
答案 0 :(得分:3)
这完全符合运气:
os.system('IF EXIST C:\APC (echo 1) else (mkdir C:\APC)')
因为反斜杠不会转义任何内容(\A
不是转义序列)
但是只需将第二个命令粘贴到python REPL中,然后看:
>>> 'IF EXIST C:\APC\3d (echo 1) else (mkdir C:\APC\3d)'
'IF EXIST C:\\APC\x03d (echo 1) else (mkdir C:\\APC\x03d)'
反斜杠数字被解释为实际的字节值...使用原始字符串前缀修复:
>>> r'IF EXIST C:\APC\3d (echo 1) else (mkdir C:\APC\3d)'
'IF EXIST C:\\APC\\3d (echo 1) else (mkdir C:\\APC\\3d)'
但不要调用系统命令来测试&创造dirs。使用纯python来做到这一点:
import os
d = r"C:\APC\3d"
if os.path.exists(d):
print("exists")
else:
os.mkdir(d)
它更易读,更易于调试,您可以从python异常中受益,并使您的代码在其他平台上更具可移植性(当然,不是使用那种硬编码路径)