我正在尝试复制文件,
>>> originalFile = '/Users/alvinspivey/Documents/workspace/Image_PCA/spectra_text/HIS/jean paul test 1 - Copy (2)/bean-1-aa.txt'
>>> copyFile = os.system('cp '+originalFile+' '+NewTmpFile)
但必须首先在open函数起作用之前替换空格和括号:
/ Users / alvinspivey / Documents / workspace / Image_PCA / spectra_text / HIS / jean \ paul \ test \ 1 \ - \ Copy \ \(2 \)/ bean-1-aa.txt
空格'' - > '\' 括号'(' - >'\('等。
更换空间工作:
>>> originalFile = re.sub(r'\s',r'\ ', os.path.join(root,file))
但是括号会返回错误:
>>> originalFile = re.sub(r'(',r'\(', originalFile)
追踪(最近一次通话): 文件“”,第1行,in 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py”,第151行,在sub return _compile(pattern,flags).sub(repl,string,count) 在_compile中输入文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py”,第244行 引发错误,v#无效表达 sre_constants.error:不平衡的括号
我是否正确替换了括号?
此外,为此使用re.escape()时,文件未正确返回。所以它不是替代品。
答案 0 :(得分:2)
(
在正则表达式(分组)中具有特殊含义,您必须将其转义:
originalFile = re.sub(r'\(',r'\(', originalFile)
或者,因为您没有使用正则表达式功能进行替换:
originalFile = re.sub(r'\(','\(', originalFile)
答案 1 :(得分:2)
正则表达式r'('
被翻译为开始捕获组。这就是Python抱怨的原因。
如果您所做的只是替换空格和括号,那么可能只有string.replace会这样做吗?
答案 2 :(得分:2)
或者,如果你避免调用shell(os.system)来复制,你不必担心转义空格和其他特殊字符,
import shutil
originalFile = '/Users/alvinspivey/Documents/workspace/Image_PCA/spectra_text/HIS/jean paul test 1 - Copy (2)/bean-1-aa.txt'
newTmpFile = '/whatever.txt'
shutil.copy(originalFile, newTmpFile)
答案 3 :(得分:0)