[英]Removing carriage return characters from a file using python
import os
import sys
files = os.listdir(sys.argv[1])
for file in files:
if file[-4:] == ".png":
os.rename(file, file.replace('\r', ''))
我正在使用上面的代码从文件名中删除\\ r,但是执行某些操作时出现以下错误
Traceback (most recent call last):
File "renameImages.py", line 9, in <module>
os.rename(f, f.replace('\r', ''))
OSError: [Errno 2] No such file or directory
我要去哪里错了?
您没有告诉它在argv[1]
声明的文件目录,请尝试os.rename(sys.argv[1]+"/file",sys.argv[1]+"/"+replace('\\r'','')
(对于Windows,则为'\\\\')。
您可以使用str.rstrip('\\ r')方法从字符串的右侧删除一组字符:
>>> s="this is your brain on drugs\r\n\r\n"
>>> s
'this is your brain on drugs\r\n\r\n'
>>> s=s.rstrip('\n\r ')
>>> s
'this is your brain on drugs'
您在帖子中说文件名的末尾有\\r
; 这将是非常不寻常的。 您确定文件名的字符串末尾带有\\r
还是因为使用Python打印该文件名而假定它为\\r
? 请记住,Python将自动返回值附加到您打印的字符串。
编辑
OK:文件名的末尾确实有一个\\r
。 我的第一个建议是修复产生此类不友好文件名的脚本。
对于此程序,您需要在目录前面添加目录名称,或将CD放入相关目录。 由于此答案是前置的,因此这里是CD'ing:
try:
os.chdir(sys.argv[1])
except OSError:
print "can't change to ",sys.argv[1]
sys.exit(1)
# proceed with the rest of your script...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.