我有一个文件名,我想传递给程序或bash脚本。例如,如果它是my car's picture.jpg
,我必须将其更改为my\ car\'s picture.jpg
以将其传递给os {system show my\ car\'s picture.jpg
。是否有自动执行反斜杠的功能?
答案 0 :(得分:2)
您应该使用subprocess
模块从Python调用shell脚本。然后你不必担心自己逃避的事情。
import subprocess
subprocess.call(['script_name', "my car's picture.jpg"])
subprocess.call()
会为您正确地逃避一切。如果您需要阅读shell脚本的输出,请改用subprocess.check_output()
。
答案 1 :(得分:2)
您可以按原样传递并使用subprocess,os.system
已弃用。
c = check_output(["file","/home/padraic/Pictures/my cars' picture.png"])
print(c)
b"/home/padraic/Pictures/my cars' picture.png: PNG image data, 1366 x 768, 8-bit/color RGB, non-interlaced\n"
要使用check_call
调用脚本,如果要管道,可以使用Popen
,上面链接的文档中有很多示例,包括replacing-os-system。
答案 2 :(得分:0)
我可以提供一些可能对您有所帮助的不完整建议。
使用"my car's picture.jpg"
- 双引号转义单引号
在UNIX文件系统中使用空格只会产生令人头疼的问题。您可以在双引号内传递文件名。
os.system('cp "my car\'s picture" myCarPicture.jpg')
如果在Windows系统中使用带反斜杠的文件名,请使用原始字符串
r"C:\Foo\bah\baz.jpg"