Как создать текстовый файл в Python без csv.writer? - PullRequest
0 голосов
/ 27 января 2011

Мне нужен разделенный запятыми TXT-файл с расширением TXT."a, b, c"

Я использовал csv.writer для создания файла csv, изменил расширение.Другая прога не будет использовать / обрабатывать данные.Я пробовал "wb", "w."

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

, открытый с помощью блокнота --- Это полные файлы.Их файл: создан с использованием графического интерфейса пользователя, использует три символа

PDCO,ICUI,DVA

мой файл: создан с использованием python

PDCO,ICUI,DVA

Проверено: открыт файл, работает, открыт файл - не удалось.Просто откройте и закройте с помощью сохранения в блокноте.открыть мой файл - работал

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

Редактировать: запись TXT-файла без Cvs Writer .....

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

Ответы [ 5 ]

3 голосов
/ 27 января 2011

Мне кажется, вы не знаете, какой у вас сторонний формат ввода приложения.Если .CSV не преобразован, это может быть что-то еще.

Вы пытались изменить разделитель из n ';'to ','

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

2 голосов
/ 27 января 2011

Я думаю, что проблема в режиме записи вашего файла, согласно CSV-файл, написанный на Python, имеет пустые строки между каждой строкой

Если вы создаете свой CSV-файл, как

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

csv.writer заканчивает свои строки в '\ r \ n', а обработка текстовых файлов Python (на компьютерах с Windows) затем преобразует '\ n' в '\ r \ n', в результате чего строки заканчиваются на '\ r \ г \ п». Многие программы будут подавлены этим; Блокнот распознает это как проблему и удаляет лишний '\ 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))

вставьте результаты этого здесь, чтобы мы могли увидеть, как эти два сравнивают побайтно.

1 голос
/ 28 января 2011

Попробуйте это:

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 и т. Д.), Чтобы убедиться, чтопроблема.Если эта программа захлебывается новой строкой, тогда возможно все.

1 голос
/ 27 января 2011

Я подозреваю, что @ комментарий Хью является правильным, что это проблема кодирования.

Когда вы делаете Сохранить как в блокноте, что выбирается в раскрывающемся списке Кодировка?Если вы выбираете разные кодировки, некоторые или все из них не открываются сторонней программой?

1 голос
/ 27 января 2011
  1. Итак, я сохраняю как текстовый файл.

  2. Теперь создайте свой собственный текстовый файл с python.

Каковы точные различия между их файлом и вашим файлом?Целый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...