Как создавать и открывать файлы через Python?

У меня очень элементарный вопрос, но я попытался найти предыдущие сообщения и не могу найти ничего, что могло бы помочь. Я изучаю файл ввода / вывода в Python. Все обучающие материалы, которые я видел до сих пор, похоже, пропустили шаг и просто предположили, что файл уже создан, и просто говоря, что-то вроде handleName = open('text.txt', 'r') , но это оставляет 2 вопроса без ответа для меня:

  1. Должен ли я создать файл вручную и назвать его? Я использую Mac, поэтому мне нужно перейти к приложениям, открыть TextEdit, создать и сохранить файл, или я смогу сделать это с помощью некоторой команды в IDLE?
  2. Я попытался вручную создать файл (как описано выше), но затем, когда я попытался войти в openfile = open('test_readline', 'r') , я получил ошибку: IOError: [Errno 2] No such file or directory: 'abc'

Что касается ошибки, я предполагаю, что должен объявить путь, но как это сделать в Python?

 openfile = open('test_readline', 'w') ^^ 

Открытие в режиме write создаст файл, если он еще не существует. Теперь вы можете записать в него и закрыть указатель файла, и он будет сохранен.

Чтобы иметь возможность читать из любого файла, файл должен существовать. Правильно? Теперь посмотрите здесь, файл ввода / вывода имеет синтаксис, как показано ниже:

 fp = open('file_name', mode) # fp is a file object 

Второй аргумент, т.е. режим, описывает способ использования файла. w будет открывать любой существующий файл (если он существует) с именем, указанным в первом аргументе. В противном случае создается новый файл с тем же именем. Кроме того, если вы находитесь в Windows и хотите открыть файл в двоичном режиме, добавьте b в режим. Например. чтобы открыть файл для записи в двоичном режиме, используйте wb . Заметим, что если вы попытаетесь открыть любой существующий файл в режиме w (write), то существующий файл с тем же именем будет удален. Если вы хотите записать в существующий файл, не удалив старые данные, используйте режим a Он добавляет новые данные в конце предыдущего.

 fw = open('file_name','w') fa = open('file_name','a') # append mode 

Чтобы узнать подробно, вы можете обратиться к документу в Python File I / O. Надеюсь, это поможет!

Python автоматически использует путь по умолчанию.

 import os default_path = os.getcwd() ## Returns the default path new_path = "C:\\project\\" ## Path directory os.chdir(path) ## Changes the current directory 

После изменения пути файлы, которые вы пишете и прочитаете, будут находиться в C: \ project. Если вы попробуете и прочтете проект еще где, программа завершится неудачно.

os.chdir – это то, как вы объявляете или задаете путь в python.

  1. Должен ли я создать файл вручную и назвать его?

Вы имеете в виду пользователя, вы должны использовать существующие инструменты для создания файла, а затем вернуться к Python, чтобы работать над ним? Нет. У Python есть все инструменты, необходимые для создания файла. Как уже объяснялось vks в их ответе , вы должны открыть файл, используя режим, который будет создавать файл, если он не существует. Вы выбрали режим чтения («r»), который (правильно) выкинет ошибку, если нет файла для чтения в указанном вами местоположении, что приводит нас к …

  1. Я предполагаю, что должен объявить путь, но как это сделать на Python?

Если вы этого не сделаете (если вы скажете, например, «filename.txt»), Python будет выглядеть в текущем рабочем каталоге. По умолчанию это текущий рабочий каталог оболочки при вызове интерпретатора Python. Это почти всегда верно, если какая-то программа не изменила его, что необычно. Чтобы указать путь, вы можете либо скопировать его, как вы делаете, с именем файла:

 open('/full/path/to/filename.txt') 

или вы можете построить его с os.path модуля os.path .


Пример:

Я создал пустой каталог и открыл в нем интерпретатор Python.

 >>> with open('test.txt'): pass ... Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 2] No such file or directory: 'test.txt' >>> with open('test.txt', 'w'): pass ... >>> 

Как отмечено, режим чтения (по умолчанию) дает ошибку, потому что нет файла. Режим записи создает для нас файл, в котором ничего нет. Теперь мы видим файл в каталоге, и открытие с режимом чтения работает:

 >>> os.listdir(os.getcwd()) ['test.txt'] >>> with open('test.txt'): pass ... >>> # ^ No IOError because it exists now 

Теперь я создаю подкаталог под названием «subdir» и перемещаю туда текстовый файл. Я сделал это в командной строке, но мог так же легко сделать это в Python:

 >>> with open('test.txt'): pass ... Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 2] No such file or directory: 'test.txt' >>> with open('subdir/test.txt'): pass ... 

Теперь мы должны указать относительный путь (по крайней мере), чтобы открыть файл, как в командной строке. Здесь я «жестко закодировал» его, но его можно так же легко «застроить» с помощью модуля os :

 >>> with open(os.path.join(os.getcwd(), 'subdir', 'test.txt')): pass 

(Это один из способов, которым это можно было бы сделать в качестве примера.)