Я делаю простой код с модулем Shutil для копирования другого содержимого файла, и у меня возникла ошибка FileNotFound, из-за которой я хочу использовать имя файла вместо того, чтобы каждый раз вставлять путь к файлу. Но что бы я ни делал, мне всегда нужно было вставить путь к файлу, чтобы не получить ошибку.
import shutil
shutil.copyfile("test",'copy.txt') #scr,dst
Ошибка:
Traceback (most recent call last):
File "c:\Users\user\AppData\Local\Programs\Microsoft VS Code\My Projo's (VSCODE)\Python 🐍\Python 🐍 - Lessons\DUPEME", line 9, in <module>
shutil.copyfile("test", "copy.txt")
File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\shutil.py", line 260, in copyfile
with open(src, 'rb') as fsrc:
^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'test'






Используйте это, чтобы выяснить, что процессы Python видят в качестве текущего рабочего каталога (os.getcwd()) и какой файл они видят в этом каталоге:
import os
print(os.getcwd())
print(sorted(os.listdir('.')))
Альтернативно используйте абсолютные пути:
import os
import os.path
import shutil
mydir = r'C:\Users\user\Downloads'
shutil.copyfile(os.path.join(mydir, "test"), os.path.join(mydir, 'copy.txt'))
В приведенном ниже коде убедитесь, что вы используете необработанные строковые литералы, начинающиеся с r (r'...'), иначе Python будет неправильно интерпретировать обратную косую черту.
Проблем с кодом нет, проблема в том, откуда вы запускаете программу, и в существовании файла src. Ошибка «Нет такого файла или каталога: 'test'» означает, что Python ищет файл с именем «test» внутри текущего рабочего каталога, но не находит его. Этот код будет работать нормально, где бы вы его ни запускали на компьютере, если в рабочем каталоге существуют файлы «test» и «copy.txt». Хорошей практикой является выделение для каждого проекта нового каталога, а затем размещение в нем скрипта Python вместе с файлом «test» и файлом «copy.txt». Если все три существуют и находятся в одном месте, и вы запустите сценарий, он будет работать.
Действия по исправлению ошибки:
Если вы хотите изменить структуру проекта, чтобы скрипт можно было запускать из любого места, вы можете использовать абсолютные пути. Допустим, файл Python расположен в папке D:\scripts, а файлы «test» и «copy.txt» расположены в папке C:\Users\user\files. Вы можете заменить пути в коде Python их абсолютными путями: Shutil.copyfile("C:\Users\user\files\test", C:\Users\user\files\copy.txt"). Тогда скрипт Python будет работать, даже если он находится в совершенно отдельном каталоге.
Проблема заключалась в том, что я поместил «тест» в созданную мной папку, которая, в свою очередь, была вложена в другую папку, предназначенную для хранения моих проектов. Эта настройка привела к ошибке, с которой я столкнулся.
Для наглядности это выглядело так: папка примера > папка другого примера > файл «тест». Мне нужно было переместить его за пределы этой папки и за пределы папки, в которой я храню свои проекты. Затем это устранит ошибку, поскольку теперь он видит файл «test».
Я до сих пор не понимаю, как он не смог увидеть мой файл внутри одной из этих папок.
Используйте абсолютный путь или убедитесь, что рабочий каталог правильный.