Python 打印路径与给定给tar的路径不匹配
我提供了一个需要在tar函数中备份的文件列表 该列表是比较包含校验和的两个文本文件的结果 文件的制作方式:Python 打印路径与给定给tar的路径不匹配,python,Python,我提供了一个需要在tar函数中备份的文件列表 该列表是比较包含校验和的两个文本文件的结果 文件的制作方式: hash = hashlib.md5(path + '/' + file).hexdigest() f.write('{} - {}'.format(hash, path + '/' + file) + '\n') [Errno 2] No such file or directory: '/XXX/XXX/XXXX/XXXX/Trash/files/hihi\n' 如何比较它们: w
hash = hashlib.md5(path + '/' + file).hexdigest()
f.write('{} - {}'.format(hash, path + '/' + file) + '\n')
[Errno 2] No such file or directory: '/XXX/XXX/XXXX/XXXX/Trash/files/hihi\n'
如何比较它们:
with open(tmpfile, 'r') as f1:
with open(storagefile, 'r') as f2:
diff = set(f1).difference(f2)
我在涂焦油时出现以下错误:
hash = hashlib.md5(path + '/' + file).hexdigest()
f.write('{} - {}'.format(hash, path + '/' + file) + '\n')
[Errno 2] No such file or directory: '/XXX/XXX/XXXX/XXXX/Trash/files/hihi\n'
请注意文件名中的”
和\n
如果我在涂焦油前打印路径,则没有'
和\n
/XXX/XXX/XXXX/XXXX/Trash/files/hihi
有人知道为什么会发生这种情况或者如何解决吗?
也许我应该使用流编写器,而不必依赖
\n
当使用set(f1)
读取文件时,从文件中读取的行包括换行符(类似于f1.readlines())
例如:
[5]: !cat foo.txt
foo
bar
baz
In [6]: with open('foo.txt', 'r') as f:
...: s = set(f)
...:
In [7]: s
Out[7]: {'bar\n', 'baz\n', 'foo\n'}
有很多方法可以解决这个问题。例如,使用:
diff = {name.rstrip('\n') for name in set(f1).difference(f2)}
如果文件总是使用问题中所示的代码创建,那么这应该可以正常工作。如果最终您可能会读取在其他地方创建的文件,那么在将行放入集合之前,您应该安全地去掉换行符。这将避免文件没有最终换行符的潜在问题。值得注意的是,这将去除尾随空格,并有助于OP。strip()有点笨手笨脚;它将删除空格、制表符、换行符。。。name.rstrip('\n')可能更像它。此外,OP可能对写新东西感兴趣。当然。虽然使用
strip()
可能是无害的,rstrip('\n')
修复了特定的问题。答案已更新。