繁体   English   中英

使用python从文件中删除回车符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM