2016-05-30 5 views
-1

Я новый ученик python, и теперь я вошел в обработку файлов.Работа с файловой системой командной строки python не работает? Я работаю правильно?

Я пробовал решение для своей проблемы, но не смог, поэтому отправляю свой вопрос. перед дублированием, пожалуйста, рассмотрите мой вопрос.

Я попытался создать файл, он сработал. запись в файле также работал.

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

Я использую терминал командной строки для работы с python и работает в ОС Ubuntu.

Ниже приведено кодирование, которое я пробовал. Файл создается в нужном месте, и также присутствует письменный текст.

f0=open("filehandling.txt","wb") 
f0.write("my second attempt") 
s=f0.read(10); 
print s 

Я также пробовал с wb +, r +. Но он просто возвращается как пустой

редактировать 1:

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

fo = open("samp.txt", "wb") 
fo.write("Text is here\n"); 

fo.close() 

fo = open("samp.txt", "r+") 
str = fo.read(10); 

print "Read String is : ", str 

fo.close() 
+0

работает для меня (на Python 3), когда я не открыть файл в двоичном режиме ('Ф.О. = открыт ("samp.txt", "w") '). Должен работать в Python 2 как есть. – Matthias

ответ

0

Прежде всего, если вы open с wb флаг, то файл будет только в записываемый режиме. Если вы хотите как читать, так и писать, вам нужен флаг wb+. Если вы не хотите, чтобы файл усекался каждый раз, тогда вам нужно rb+.

Теперь файлы представляют собой потоки с указателями, указывающими на определенное место внутри файла. Если вы пишете

f0.write("my second attempt") 

затем точки целеуказателя на [pointer before writing] (в вашем случае начало файла, т.е. 0) плюс [length of written bytes] (в вашем случае 17, что конец файла). Для того, чтобы прочитать весь файл, вы должны переместить этот указатель обратно в начале, а затем прочитать:

f0.seek(0) 
data = f0.read() 
+0

Я также пробовал с r + после создания извините, что я забыл упомянуть об этом –

+0

Вопрос редактировалось @freakish –

+0

@anandmbs Вы прочитали мой ответ до конца? Он возвращается пустым, потому что вы читаете его с конца файла. Вам нужно 'f0.seek (0)'. – freakish