Впервые я заметил эту проблему немного раньше, когда опубликовал эту тему .По сути, я получаю очень странную проблему, когда Python «видит» файлы, которые на самом деле не существуют в моем файловом браузере при работе с файлами.
Как, например, если я открою файл с абсолютным путем, изменим и выведу его содержимое через Python, он напечатает именно то, что должен.Но когда я пытаюсь открыть тот же файл по тому же пути absolute в моем файловом браузере Windows, файл не обновляется с моими изменениями.
Недавно я также столкнулся с подобной проблемой -переименование файлов.Вот простой скрипт, который я написал, чтобы заменить все пробелы в именах файлов символами подчеркивания.
rename.py:
import os
i = 0
path = "E:/sample_path/"
for filename in os.listdir(path):
src = path + filename
dst = path + filename.replace(" ", "_")
os.rename(src, dst)
i += 1
print(str(i) + " files processed.")
После выполнения некоторых распечаток в Python я вижучто все файлы в каталоге переименовываются правильно, но он просто не корректно обновлялся, когда я действительно просматривал каталог.Как в файловом браузере, так и при использовании команды dir
.Как и в случае создания новых файлов в Python, они существуют в глазах Python, но их нет в Windows, даже если скрытые файлы видны и все такое.
Теперь по интересной части: Этот скрипт работает, если я открываю редактор python в cmd и импортирую его .Так что я знаю, что все правильно, никаких синтаксических ошибок или чего-то еще - это просто странная ошибка, возникающая с Python.
Например, если я зайду в командную строку и введу python rename.py
, он не вернет никаких ошибок ивыдаст даже правильные результаты - x files processed.
, но на самом деле он не изменит какие-либо "настоящие" файлы.
Но если я зайду в командную строку и наберу python
, чтобы вызвать редактор cmd, введите import rename
дает правильный вывод и корректно обновляет все файлы.Так что пока этот обходной путь помогает, но это очень странная проблема, и я еще не видел, чтобы кто-то еще сталкивался с этим.Как будто Python создает временную копию файловой системы и не завершает синхронизацию с Windows.
Я несколько раз пытался переустановить Python, как для x64, так и для x86, и пока ничего не исправлено.
РЕДАКТИРОВАТЬ: Вот упрощенный пример, иллюстрирующий мою проблему.
write.py:
f = open("newfile.txt", "w+")
f.write("hello new file")
f.close()
read.py:
f = open("newfile.txt", "r")
for l in f.readlines():
print(l)
Если я запускаюwrite.py
, ошибки не возвращаются.Но также файл с именем newfile.txt
не виден в моем текущем рабочем каталоге .Однако, если я запускаю read.py
, он печатает hello new file
.Очевидно, что оба они обращаются к одному и тому же невидимому файлу.