письменная проблема в питоне - PullRequest
3 голосов
/ 14 июля 2009

У меня очень простая проблема. Я изучаю свои первые шаги с Python и сценариями в целом, и поэтому даже это заставляет меня задуматься:

Я хочу читать и записывать строки в новый файл:

ifile=open("C:\Python24\OtsakkeillaSPSS.csv", "r")
ofile = open("C:\Python24\OtsakkeillaSPSSout.csv", "w")

#read first line with headers
line1 = ifile.readline()
print line1

#read following lines which contain data & write it to ofile
for line in ifile:
    if not line:
        break
    ofile.write(line)

если я распечатаю это на экране, все мои строки будут выполнены хорошо:

0,26100,568,8636
0,11130,555,**3570
0,57100,77,2405**
0,60120,116,1193
0,33540,166,5007
0,95420,318,2310
0,20320,560,7607
0,4300,692,3969
0,65610,341,2073
0,1720,0,0
0,78850,228,1515
0,78870,118,1222

Если я напишу это в ofile, я пропущу 15 строк:

0,6100,948,8332
0,26100,568,8636
0,11130,555

Буду признателен, если кто-нибудь скажет мне, что я не понимаю?

Reg,

Яани

Ответы [ 5 ]

5 голосов
/ 14 июля 2009

Вы должны вызывать ofile.close () в соответствии с python docs .

Я не уверен, что записи полностью сбрасываются в файл без явного закрытия.

Также, как упоминал SilentGhost, проверьте наличие пустых строк во входном файле.

И как упомянуто stefanw ниже, это утверждение if if break не обязательно в for in.

4 голосов
/ 14 июля 2009
#read following lines which contain data & write it to ofile
for line in ifile:
    if not line:
        continue          #break stops the loop, you should use continue
    ofile.write(line)
3 голосов
/ 14 июля 2009

«Если не строка:» - проверка не требуется.

for line in ifile:
    ofile.write(line)
1 голос
/ 15 июля 2009

Почему вы используете python2.4? последняя версия python2.6

и тогда вы можете использовать

from contextlib import nested
ipath = "C:\Python24\OtsakkeillaSPSS.csv"
opath = "C:\Python24\OtsakkeillaSPSSout.csv"
with nested(open(ipath,'r'), open(opath,'w') as ifile, ofile:

    #read first line with headers
    line1 = ifile.readline()
    print line1

    #read following lines which contain data & write it to ofile
    for line in ifile:
        ofile.write(line)
0 голосов
/ 14 июля 2009

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

привет

У меня очень простая проблема. Я изучаю мои первые шаги с Python и сценариями в целом, и поэтому даже это заставляет меня задуматься:

Я хочу читать и записывать строки в новый файл:

ifile = open ("C: \ Python24 \ OtsakkeillaSPSS.csv", "r") ofile = open ("C: \ Python24 \ OtsakkeillaSPSSout.csv", "w")

читать первую строку с заголовками line1 = ifile.readline () печать line1 читать следующие строки, содержащие данные, и записывать их в ofile

для строки в ifile: если не строка: перерыв ofile.write (линия)

если я распечатываю это на экране, я хорошо делаю все строки:

0,26100,568,8636 0,11130,555,3570 0,57100,77,2405 0,60120,116,1193 0,33540,166,5007 0,95420,318,2310 0,20320,560,7607 0,4300,692,3969 0,65610,341,2073 0,1720,0,0 0,78850,228,1515 0,78870,118,1222

Если я пишу это в ofile, я пропускаю около 15 строк:

0,6100,948,8332 0,26100,568,8636 0,11130,555

Буду признателен, если кто-нибудь укажет мне, что я не понимаю?

Reg

Яани

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