Файлы и ввод-вывод.
Может быть я чего-то не понимаю, но почему подобный код:
Выводит строки "ping network" и "parsing results" не на экран, как ожидается, а в файл result.csv? По логике вещей, в момент вывода этих строк питон вообще ни о каком файле еще не знает - я его еще не открывал...
И почему в коде
Если убрать logfile.flush() то запись в лог идет не в том порядке, в котором выполняются действия команды. Хотя я явно прописывал p.wait() ...
В общем, скорее всего, я чего-то не понимаю.
for Net in networks :
print 'ping network ' + Net + ' ...'
чего-то делаю...
print 'parsing results ...'
rf = open('result.csv','w')
for sw in switchs :
rf.write( swip + ',' + i + ',' + ipmac[i] + ',' + macport[ ipmac[i] ])
r.flush()
r.close()
print 'end !'
Выводит строки "ping network" и "parsing results" не на экран, как ожидается, а в файл result.csv? По логике вещей, в момент вывода этих строк питон вообще ни о каком файле еще не знает - я его еще не открывал...
И почему в коде
logfile=open('sitesync.log', 'w')
dt = datetime.datetime.now()
d = dt.strftime(datestrf)
logfile.write(d + 'Start File Sync\n')
logfile.flush()
p = subprocess.Popen(['/usr/bin/rsync','-avz','--exclude vars.inc.php','7@ftp.ru::/public_html/','/'],
stdin=subprocess.PIPE, stdout=logfile, stderr=logfile, env={'RSYNC_PASSWORD':'fffff'} )
p.wait()
p = subprocess.Popen(['/bin/chown','-R','2:2','/'],
stdin=subprocess.PIPE, stdout=logfile, stderr=logfile)
p.wait()
dt = datetime.datetime.now()
d = dt.strftime(datestrf)
logfile.write(d + 'End File Sync\n')
logfile.flush()
dt = datetime.datetime.now()
d = dt.strftime(datestrf)
logfile.write(d + 'Start DB Backup to file ' + runpath + 'mitro__tv_ru.sql' + '\n')
Если убрать logfile.flush() то запись в лог идет не в том порядке, в котором выполняются действия команды. Хотя я явно прописывал p.wait() ...
В общем, скорее всего, я чего-то не понимаю.
