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

时间:2011-04-02 00:33:34

标签: python carriage-return

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 \ n,但有些如何执行时我得到以下错误

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

我哪里错了?

2 个答案:

答案 0 :(得分:5)

您没有告诉它在argv[1]中声明的文件目录 试试os.rename(sys.argv[1]+"/file",sys.argv[1]+"/"+replace('\r'','') (或Windows的'\\')。

答案 1 :(得分:1)

您可以使用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打印它吗?请记住,Python会自动返回您打印的字符串。

修改

好的:文件名最后确实有一个\r。我的第一个建议是修复产生这种不友好文件名的脚本......

对于此scipt,您需要将前面或CD上的目录名称添加到相关目录中。由于THIS回答有前置,这里是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...