Вывод для вложенной функции цикла while в Python в текстовый файл

Я пытался получить вывод для вложенной функции цикла "пока" в Python в текстовый файл. Я знаю, что "записать в файл" это:

TheFile=open("C:/test.txt","w")
TheFile.write("Hello")
TheFile.close()

Но что я должен использовать, если хочу получить вывод моего вложенного цикла координат широты и долготы в текстовый файл? Я могу получить то, что хочу, от функции печати, но не могу передать это в текстовый файл... Спасибо:

lat=-100
long=-190
 while lat <=80:
  lat=lat+10
  long=-190
  while long<=170:
      long=long+10
     print ("latitude:"+format(lat),"longitude:"+format(long))

person user1998366    schedule 21.01.2013    source источник
comment
Использование format() без какой-либо спецификации формата бесполезно, вместо этого используйте str() или лучше используйте форматирование строки.   -  person Ashwini Chaudhary    schedule 22.01.2013


Ответы (2)


Используйте только один оператор TheFile=open("C:/test.txt","w") и только один оператор TheFile.close() и убедитесь, что они находятся вне всех циклов.

Затем вы можете использовать аргумент file= для print, а в противном случае сохранить его как ту же самую инструкцию print.

В вашем примере что-то вроде:

TheFile=open("C:/test.txt","w")
lat=-100
long=-190
 while lat <=80:
  lat=lat+10
  long=-190
  while long<=170:
      long=long+10
      print ("latitude:"+format(lat),"longitude:"+format(long), file=TheFile)
TheFile.close()
person David Robinson    schedule 21.01.2013
comment
@AshwiniChaudhary: Мое предположение заключалось в том, что ОП использовал Python 3.0, поскольку он использовал круглые скобки. Конечно, это также допустимый синтаксис в 2.x, просто он был бы не нужен. - person David Robinson; 22.01.2013

Это печатает вывод, напечатанный stdout, в файл. Вы использовали ',' в функции write()? Он рассматривает его как два отдельных аргумента.

Подробнее о write в справке оболочки Python.

запись(...)
запись(str) -> Нет. Записать строку str в файл.

Note that due to buffering, flush() or close() may be needed before
the file on disk reflects the data written.

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

with open("output","w") as f:
  lat=-100
  long=-190
  while lat <=80:
    lat=lat+10
    long=-190
    while long<=170:
      long=long+10
      f.write("latitude:"+format(lat)+" longitude:"+format(long))
person sidi    schedule 21.01.2013