如何使用Python读取.dif文件

如何使用Python读取.dif文件,python,spreadsheet,Python,Spreadsheet,我正在进行一个项目,该项目要求我读取扩展名为.dif的文件。Dif代表数据信息交换。该文件在OpenOfficeCalc中很好地打开。然后您可以轻松地保存为csv文件,但是当我在Python中打开时,我得到的是没有意义的随机字符。这是最后一段代码,我只是想看看我是否能读懂 txt = open('C:\myfile.dif', 'rb').read() print txt 我甚至愿意先通过编程将文件转换为csv。在开门之前,如果有人知道怎么做。一如既往,我们非常感谢您的帮助。下面是我运行代

我正在进行一个项目,该项目要求我读取扩展名为.dif的文件。Dif代表数据信息交换。该文件在OpenOfficeCalc中很好地打开。然后您可以轻松地保存为csv文件,但是当我在Python中打开时,我得到的是没有意义的随机字符。这是最后一段代码,我只是想看看我是否能读懂

txt = open('C:\myfile.dif', 'rb').read()
print txt  
我甚至愿意先通过编程将文件转换为csv。在开门之前,如果有人知道怎么做。一如既往,我们非常感谢您的帮助。下面是我运行代码时得到的部分屏幕截图


没有听说过这种文件格式。我去拿了一个样品

我测试了你的方法,效果很好:

>>> content = open(r"E:\sample.dif", 'rb').read()
>>> print (content)
b'TABLE\r\n0,1\r\n"EXCEL"\r\nVECTORS\r\n0,8\r\n""\r\nTUPLES\r\n0,3\r\n""\r\nDATA\r\n0,0\r\n""\r\n-1,0\r\nBOT\r\n1,0\r\n"Welcome to File Extension FYI Center!"\r\n1,0\r\n""\r\n1,0\r\n""\r\n-1,0\r\nBOT\r\n1,0\r\n""\r\n1,0\r\n""\r\n1,0\r\n""\r\n-1,0\r\nBOT\r\n1,0\r\n"ID"\r\n1,0\r\n"Type"\r\n1,0\r\n"Description"\r\n-1,0\r\nBOT\r\n0,1\r\nV\r\n1,0\r\n"ASP"\r\n1,0\r\n"Active Server Pages"\r\n-1,0\r\nBOT\r\n0,2\r\nV\r\n1,0\r\n"JSP"\r\n1,0\r\n"JavaServer Pages"\r\n-1,0\r\nBOT\r\n0,3\r\nV\r\n1,0\r\n"PNG"\r\n1,0\r\n"Portable Network Graphics"\r\n-1,0\r\nBOT\r\n0,4\r\nV\r\n1,0\r\n"GIF"\r\n1,0\r\n"Graphics Interchange Format"\r\n-1,0\r\nBOT\r\n0,5\r\nV\r\n1,0\r\n"WMV"\r\n1,0\r\n"Windows Media Video"\r\n-1,0\r\nEOD\r\n'
>>> 
问题是文件中有什么以及您希望如何处理它。我个人喜欢:

with open(r"E:\sample.dif", 'rb') as f:
    for line in f:
        print (line)
在第一个代码块中,前面有一个
b''
(字节!)的长行可以在
\r\n
上迭代:

b'TABLE\r\n'
b'0,1\r\n'
b'"EXCEL"\r\n'
b'VECTORS\r\n'
b'0,8\r\n'
b'""\r\n'
b'TUPLES\r\n'
b'0,3\r\n'
b'""\r\n'
b'DATA\r\n'
b'0,0\r\n'
.
.
.
b'"Windows Media Video"\r\n'
b'-1,0\r\n'
b'EOD\r\n'

我没听说过这种文件格式。我去拿了一个样品

我测试了你的方法,效果很好:

>>> content = open(r"E:\sample.dif", 'rb').read()
>>> print (content)
b'TABLE\r\n0,1\r\n"EXCEL"\r\nVECTORS\r\n0,8\r\n""\r\nTUPLES\r\n0,3\r\n""\r\nDATA\r\n0,0\r\n""\r\n-1,0\r\nBOT\r\n1,0\r\n"Welcome to File Extension FYI Center!"\r\n1,0\r\n""\r\n1,0\r\n""\r\n-1,0\r\nBOT\r\n1,0\r\n""\r\n1,0\r\n""\r\n1,0\r\n""\r\n-1,0\r\nBOT\r\n1,0\r\n"ID"\r\n1,0\r\n"Type"\r\n1,0\r\n"Description"\r\n-1,0\r\nBOT\r\n0,1\r\nV\r\n1,0\r\n"ASP"\r\n1,0\r\n"Active Server Pages"\r\n-1,0\r\nBOT\r\n0,2\r\nV\r\n1,0\r\n"JSP"\r\n1,0\r\n"JavaServer Pages"\r\n-1,0\r\nBOT\r\n0,3\r\nV\r\n1,0\r\n"PNG"\r\n1,0\r\n"Portable Network Graphics"\r\n-1,0\r\nBOT\r\n0,4\r\nV\r\n1,0\r\n"GIF"\r\n1,0\r\n"Graphics Interchange Format"\r\n-1,0\r\nBOT\r\n0,5\r\nV\r\n1,0\r\n"WMV"\r\n1,0\r\n"Windows Media Video"\r\n-1,0\r\nEOD\r\n'
>>> 
问题是文件中有什么以及您希望如何处理它。我个人喜欢:

with open(r"E:\sample.dif", 'rb') as f:
    for line in f:
        print (line)
在第一个代码块中,前面有一个
b''
(字节!)的长行可以在
\r\n
上迭代:

b'TABLE\r\n'
b'0,1\r\n'
b'"EXCEL"\r\n'
b'VECTORS\r\n'
b'0,8\r\n'
b'""\r\n'
b'TUPLES\r\n'
b'0,3\r\n'
b'""\r\n'
b'DATA\r\n'
b'0,0\r\n'
.
.
.
b'"Windows Media Video"\r\n'
b'-1,0\r\n'
b'EOD\r\n'

我添加了一个屏幕截图,显示在用我的文件运行代码后得到的结果。我想知道这是不是某种编码问题?@MikeC。您使用的是什么环境?我的是直接与本地闲置;另外,尝试下载我在答案中链接的示例;用这个来测试你的方法。好主意。明天早上我来试试。问题解决了。客户在Excel中打开文件,他可以另存为制表符分隔。然后他将xls文件重命名为dif。并作为原始文件发送给我。希斯!我添加了一个屏幕截图,显示在用我的文件运行代码后得到的结果。我想知道这是不是某种编码问题?@MikeC。您使用的是什么环境?我的是直接与本地闲置;另外,尝试下载我在答案中链接的示例;用这个来测试你的方法。好主意。明天早上我来试试。问题解决了。客户在Excel中打开文件,他可以另存为制表符分隔。然后他将xls文件重命名为dif。并作为原始文件发送给我。希斯!