如何在没有csv.writer的情况下在python中创建文本文件?

问题描述:

我需要一个带有txt扩展名的逗号分隔txt文件。 “a,b,c”如何在没有csv.writer的情况下在python中创建文本文件?

我用csv.writer创建了csv文件,改变了扩展名。另一个编将不会使用/处理数据。我尝试过“wb”,“w”。

F = open(Fn, 'w') 
w = csv.writer(F) 
w.writerow(sym) 
F.close() 

用记事本打开---这些是完整的文件。 它们的文件:使用他们的GUI创建用于三个符号

PDCO,ICUI,DVA 

我的文件:使用python

PDCO,ICUI,DVA 

创建测试:打开文件 - thier工作,打开了我的文件 - 失败。 简单的打开和关闭,保存在记事本中。打开我的file--工作

Works= 'PDCO,ICUI,DVA' 
Fails= 'PDCO,ICUI,DVA\r\r\n' 

编辑:写txt文件没有的CVS作家.....

sym = ['MHS','MRK','AIG'] 

with open(r'C:\filename.txt', 'w') as F: # also try 'w' 
    for s in sym[:-1]:      # separate all but the last 
     F.write(s + ',')     # symbols with commas 
     F.write(sym[-1])     # end with the last symbol 
+7

那么究竟是什么问题?我还不完全明白,请尝试更具体。 – 2011-01-27 15:37:01

+3

你面临的问题是什么? .csv也是.txt文件(只是不同的扩展名)。 – birryree 2011-01-27 15:37:09

+0

问题,不知道......我用创建的文件作为源文件而不是在信息中输入。其他编就忽略了它。 – Merlin 2011-01-27 15:39:52

试试这个:

with open('file_that_works.csv', 'rb') as testfile:  # file is automatically 
    d = csv.Sniffer().sniff(testfile.read(1024))  # closed at end of with 
                 # block 
with open(Fn, 'wb') as F:  # also try 'w' 
    w = csv.writer(F, dialect=d) 
    w.writerow(sym) 

为了进一步解释:这看起来在工作.csv文件的样本,推断其格式。然后它使用该格式编写一个新的.csv文件,希望不必在记事本中重新保存。


编辑:如果您使用的程序不接受多行输入(?!),则不要使用csv。刚做这样的事情:

syms = ['JAGHS','GJKDGJ','GJDFAJ'] 
with open('filename.txt', 'wb') as F:  
    for s in syms[:-1]:      # separate all but the last 
     F.write(s + ',')     # symbols with commas 
    F.write(syms[-1])      # end with the last symbol 

或者更简洁:

with open('filename.txt', 'wb') as F: 
    F.write(','.join(syms)) 

此外,检查不同的文件扩展名(即.TXT,.CSV等),以确保这不是问题。如果这个程序扼杀在换行符上,那么任何事情都是可能的。

对我来说,它看起来像你并不确切地知道你的第三方应用程序的输入格式。如果.CSV没有被重新调整,那可能是别的。

您是否尝试更改分隔符';'到 ''

import csv 
spamWriter = csv.writer(open('eggs.csv', 'wb'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) 
spamWriter.writerow(['Spam'] * 5 + ['Baked Beans']) 
spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 

您可以在CSV Python API

  1. 所以一看,我保存为文本文件。

  2. 现在,用python创建我自己的txt文件。

他们有什么文件和文件之间的确切区别是什么?精确。

我认为这个问题是您的文件写入模式,按CSV file written with Python has blank lines between each row

如果你喜欢

csv.writer(open('myfile.csv', 'w')) 

csv.writer结束其在行 '\ r \ n',并创建csv文件Python的文本文件处理(在Windows机器上)然后将'\ n'转换为'\ r \ n',导致以'\ r \ r \ n'结尾的行。很多程序都会窒息这个;记事本将其视为一个问题,并将多余的'\ r'除去。

如果使用

csv.writer(open('myfile.csv', 'wb')) 

它产生预期的 '\ r \ n' 结束,无论你希望应该工作线。

编辑: @senderle有一个好点;请尝试以下操作:

goodf = open('file_that_works.txt', 'rb') 
print repr(goodf.read(100)) 
badf = open('file_that_fails.txt', 'rb') 
print repr(badf.read(100)) 

粘贴在这里的结果,所以我们可以看到两个比较字节为每个字节。

我怀疑@ Hugh的评论是正确的,这是一个编码问题。

当您在记事本中另存为时,在编码下拉菜单中选择了什么?如果您选择不同的编码,那么部分或全部的编码都无法由第三方程序打开?