这有点奇怪,但在这里。
下面是一些代码,它将文件作为日志打开,并将一些控制台输出传递给它。稍后,我打开该文件,并希望将文件的内容(每行是文件的目录路径)复制到我当前的目录中,但是我的shell返回一个错误,说它无法找到该文件,因为它有一个新行附加到它。当我在脚本中打印该行时,它没有换行符,但是当我尝试在脚本中复制它时,它给出了什么?
with open("log.txt", 'a+') as log:
for something in something_else:
p1 = subprocess.Popen(["script.py", "-x", "-options"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["egrep", 'abc|xyz'], stdin=p1.stdout, stdout=log, universal_newlines=True)
p1.stdout.close()
output = p2.communicate()[0] #Debug purposes
稍后......
with open("log.txt") as log2:
for line in log2:
line = re.sub(".pattern", "pattern", line)
line.rstrip() #doesn't work
call(['cp', line, '.'])
我的shell返回:cp无法统计`path / to / dir ** \ n **'没有这样的文件或目录
答案 0 :(得分:4)
字符串在Python中是不可变的,而是使用line = line.rstrip()
。
答案 1 :(得分:3)
这是因为line.rstrip()
会返回原始字符串的副本(请参阅docs)。
像line = line.rstrip()
这样的事情应该可以胜任。