Python:无法从str中删除换行符

Python:无法从str中删除换行符,python,shell,Python,Shell,这有点奇怪,但事情是这样的 下面是一些代码,它将文件作为日志打开,并将一些控制台输出导入其中。稍后,我打开该文件并希望将该文件的内容(每一行都是文件的目录路径)复制到当前目录中,但是我的shell返回一个错误,说它找不到该文件,因为它附加了一个新行。当我在脚本中打印该行时,它没有换行符,但当我尝试在脚本中复制它时,它有什么作用 with open("log.txt", 'a+') as log: for something in something_else: p1 =

这有点奇怪,但事情是这样的

下面是一些代码,它将文件作为日志打开,并将一些控制台输出导入其中。稍后,我打开该文件并希望将该文件的内容(每一行都是文件的目录路径)复制到当前目录中,但是我的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, '.'])

My shell返回:cp无法统计'path/to/dir**\n**'没有这样的文件或目录

字符串在Python中是不可变的,请使用
line=line.rstrip()

字符串在Python中是不可变的,请改用
line=line.rstrip()
这是因为
line.rstrip()
返回原始字符串的副本(请参阅)


所以像
line=line.rstrip()
这样的东西应该可以完成这项工作。

这是因为
line.rstrip()
返回原始字符串的副本(请参阅)


所以像
line=line.rstrip()
这样的东西应该可以完成这项工作。

您可以尝试调用(['cp',line[:-x],'.]])。首先尝试将x设置为1,看看换行符是否消失?
universal\u newlines=True
在这里无效。重定向发生在文件描述符级别(
p1.stdout.fileno()
log.fileno()
)<代码>输出在这里是
None
。您可以使用
shutil.copy(行“,”)
而不是
call(['cp',line“,”)
。您可以使用
如果重新搜索('abc | xyz',line):log.write(行)
而不是
egrp
过程。您可以将代码放入函数并使用
导入脚本;result=script.do_something(*args)
而不是
script.py
process。您可以尝试调用(['cp',第[:-x]行,'.]])吗。首先尝试将x设置为1,看看换行符是否消失?
universal\u newlines=True
在这里无效。重定向发生在文件描述符级别(
p1.stdout.fileno()
log.fileno()
)<代码>输出在这里是
None
。您可以使用
shutil.copy(行“,”)
而不是
call(['cp',line“,”)
。您可以使用
如果重新搜索('abc | xyz',line):log.write(行)
而不是
egrp
过程。您可以将代码放入函数并使用
导入脚本;结果=script.do_something(*args)
而不是
script.py
过程。这很有效。。yikes,在这里展示我的python新手水平。非常感谢。这很有效。。yikes,在这里展示我的python新手水平。非常感谢。@liquid不用担心,那个人也绊倒过我一次:)@liquid不用担心,那个人也绊倒过我一次:)