Создание файла в скрипте Python 2 для записи с использованием argv
Я хочу использовать argv для создания файла с помощью командной строки (пример >>> python thisscript.py nonexistent.txt), а затем записать в него из моего кода. Я использовал команду open(несуществующий, 'w'). Write(), но кажется, что могу открывать и записывать только в файлы, которые уже существуют. Я что-то пропустил?
Это мой код Это работает, пока файл, в который я пытаюсь записать, уже существует
from sys import argv
script, letter_file = argv
string_let='abcdefghijklmnopqrstuvwxyz'
list_of_letters = list(string_let)
f = open(letter_file)
wf = open(letter_file, 'w')
def write_func():
for j in range(26):
for i in list_of_letters:
wf.write(i)
write_func()
wf.close()
raw_input('Press <ENTER> to read contents of %r' % letter_file)
output = f.read()
print output
Но когда файл не существует, я возвращаю его в терминал.
[admin@horriblehost-mydomain ~]$ python alphabetloop.py nonexistent.txt
Traceback (most recent call last):
File "alphabetloop.py", line 14, in <module>
f = open(letter_file)
IOError: [Errno 2] No such file or directory: 'nonexistent.txt'
[admin@horriblehost-mydomain ~]$
3 ответа
open(filename, 'w')
не только для существующих файлов. Если файл не существует, он создаст его:
$ ls mynewfile.txt
ls: mynewfile.txt: No such file or directory
$ python
>>> with open("mynewfile.txt", "w") as f:
... f.write("Foo Bar!")
...
>>> exit()
$ cat mynewfile.txt
Foo Bar!
Обратите внимание, что 'w'
всегда стирает существующее содержимое файла. Если вы хотите добавить в конец существующего файла или создать файл, если он не существует, используйте 'a'
(То есть, open("mynewfile.txt", "a")
)
Это можно сделать с помощью:
import sys
if len(sys.argv)<3:
print "usage: makefile <filename> <content>"
else:
open(sys.argv[1],'w').write(sys.argv[2])
демо:
paul@home:~/SO/py1$ python makefile.py ./testfile feefiefoefum
paul@home:~/SO/py1$ ls
makefile.py makefile.py~ testfile
paul@home:~/SO/py1$ cat testfile
feefiefoefum
Примечание: в sys.argv
элемент [0]
имя скрипта, а последующие элементы содержат пользовательский ввод
Если вы откроете файл с флагом 'w', вы перезапишите содержимое файла. Если файл не существует, он создаст его для вас.
Если вы хотите добавить файл, вы должны открыть его с флагом "а".
Вот пример:
with open("existing.txt", "w") as f:
f.write("foo") # overwrites anything inside the file
existing.txt
теперь содержит "foo"
with open("existing.txt", "a") as f:
f.write("bar") # appends 'bar' to 'foo'
existing.txt
теперь содержит "foobar"
Кроме того, если вы не знакомы с with
Заявление, которое я использовал выше, вы должны прочитать об этом. Это более безопасный способ открывать и закрывать файлы с помощью так называемого Context Manager.