Строка Python заменяется в файле, не касаясь файла, если подстановка не производилась

Что возвращает Python string.replace, если подстановки строк не было? Всегда ли Python file.open (f, 'w') касается файла, даже если не было внесено никаких изменений?

Используя Python, я пытаюсь заменить в наборе файлов вхождения 'oldtext' на 'newtext'. Если файл содержит «старый текст», я хочу произвести замену и сохранить файл. В противном случае ничего не делайте, чтобы файл сохранил свою старую метку времени.

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

for match in all_files('*.html', '.'):  # all_files returns all html files in current directory     
  thefile = open(match)
  content = thefile.read()              # read entire file into memory
  thefile.close()
  thefile = open(match, 'w')             
  thefile.write(content.replace(oldtext, newtext))  # write the file with the text substitution
  thefile.close()

В этом коде Я пытаюсь выполнить file.write только в том случае, если произошла подстановка строки, но все же все файлы получают новую метку времени:

count = 0
for match in all_files('*.html', '.'):       # all_files returns all html files in current directory
    thefile = open(match)
    content = thefile.read()                 # read entire file into memory
    thefile.close()
    thefile = open(match, 'w')
    replacedText = content.replace(oldtext, newtext) 
    if replacedText != '':
        count += 1
        thefile.write(replacedText)
    thefile.close()
print (count)        # print the number of files that we modified

В конце счетчик - это общее количество файлов, а не количество измененных файлов. Какие-либо предложения? Спасибо.

Я использую Python 3.1.2 в Windows. m наличие полнофункциональной системы регистрации / аутентификации пользователей с использованием промежуточного программного обеспечения Express и Connect. app.use (express.session ({store: require ('connect'). session.MemoryStore ({reapInterval: 60000 * 10}) ...

У меня есть полнофункциональная система регистрации / аутентификации пользователей, использующая экспресс и подключение промежуточного программного обеспечения.

app.use(express.session({store: require('connect').session.MemoryStore( {reapInterval: 60000 * 10} ) }))

Единственная проблема заключается в том, что сеансы сбрасываются каждый раз при перезапуске сервера.

https://github.com/remy/nodemon - и nodemon перезапускает node.js каждый раз, когда обнаруживает файл изменить.

Как я могу иметь постоянные сеансы?

20
задан user80805 12 March 2011 в 22:50
поделиться