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