Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印路径与给定给tar的路径不匹配_Python - Fatal编程技术网

Python 打印路径与给定给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

我提供了一个需要在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'
如何比较它们:

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')
修复了特定的问题。答案已更新。