我正在比较两个文件并将差异写入第三个文件。
我无法打开文件,因为(可能)路径名中有\r
。这是在工作计算机上运行,我的用户名是robk,我认为是问题所在。
错误:
OSError: [Errno 22] Invalid argument: Users\robk\\Downloads\\AR_New_Records.csv'
这是我的代码。问题来自最后两行。
def read_items(filename):
with open(filename) as fh:
return {line.strip() for line in fh}
def diff_string(old, new):
return "\n".join(
['[-] %s' % gone for gone in old - new] +
['[+] %s' % added for added in new - old]
)
with open('Users\robk\Downloads\AR_New_Records.csv', 'w') as fh:
fh.write(diff_string(read_items('Users\robk\Downloads\latestroster.csv')), read_items('Users\robk\Downloads\oldroster.csv'))
任何帮助,将不胜感激!
我相信您的错误是由无效的文件路径引起的。您当前正在使用相对路径。尝试:
with open('C:/Users/rkrouse/Downloads/AR_New_Records.csv', 'w') as fh:
fh.write(diff_string(read_items('C:/Users/rkrouse/Downloads/latestroster.csv'), read_items('C:/Users/rkrouse/Downloads/oldroster.csv')))
我将你的相对路径切换到完整路径。另外,将反斜杠切换为正斜杠。
使用原始字符串:
r'Users\robk\Downloads\AR_New_Records.csv'
或逃避\
:
'Users\\robk\\Downloads\\AR_New_Records.csv'