Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Languages
 С
 GNU С Library 
 Qt 
 STL 
 Threads 
 C++ 
 Samples 
 stanford.edu 
 ANSI C
 Libs
 LD
 Socket
 Pusher
 Pipes
 Encryption
 Plugin
 Inter-Process
 Errors
 Deep C Secrets
 C + UNIX
 Linked Lists / Trees
 Asm
 Perl
 Python
 Shell
 Erlang
 Go
 Rust
 Алгоритмы
NEWS
Последние статьи :
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  Python 10.06   
 
TOP 20
 Alg3...2143 
 Intel 386...782 
 Secure Programming for Li...682 
 Trees...661 
 Си за 21 день...577 
 2.0-> Linux IP Networking...574 
 Ethreal 1...567 
 Lists...564 
 Stein-MacEachern-> Час...561 
 Стивенс 1...554 
 Steve Pate 3...537 
 Ethreal 2...525 
 Rodriguez 6...500 
 Python...492 
 Стивенс 4...488 
 William Gropp...465 
 Advanced Bash Scripting G...456 
 Стивенс 5...427 
 Keogh 2...412 
 Комментарий...399 
 
  01.08.2020 : 2947670+ посещений 

iakovlev.org
 

Работа с файлами в питоне

Обьекты питона состоят из данных и методов . Рассмотрим код : aFile = open ( 'someFile.txt', 'w' ) aFile - это обьект , имеющий атрибуты : aFile.closed aFile.encoding aFile.mode aFile.name aFile.newlines aFile.softSpace Также у этого обьекта имеются собственные методы : aFile.close() aFile.flush() aFile.fileno() aFile.isatty() aFile.next() aFile.read() aFile.readline() aFile.readlines() aFile.xreadlines() aFile.seek() aFile.tell() aFile.truncate() aFile.write() aFile.writelines() Откроем файл на запись : fileHandle = open ( 'test.txt', 'w' ) Теперь запишем данные в этот файл : fileHandle.write ( 'This is a test.\nReally, it is.' ) fileHandle.close() Для добавления информации в конец файла fileHandle = open ( 'test.txt', 'a' ) fileHandle.write ( '\n\n\nBottom line.' ) fileHandle.close() Прочитаем файл и распечатаем всё его содержимое : fileHandle = open ( 'test.txt' ) print fileHandle.read() fileHandle.close() Прочитаем файл и распечатаем одну строку : fileHandle = open ( 'test.txt' ) print fileHandle.readline() # "This is a test." fileHandle.close() Можно сохранить строки файла в список fileHandle = open ( 'test.txt' ) fileList = fileHandle.readlines() for fileLine in fileList: print '>>', fileLine fileHandle.close() Содержимое файла можно сохранить в переменной : fileHandle = open ( 'test.txt' ) garbage = fileHandle.readline() fileHandle.readline() # "Really, it is." fileHandle.close() Можно открыть файл с определенной позиции : fileHandle = open ( 'test.txt' ) garbage = fileHandle.readline() fileHandle.seek ( 0 ) print fileHandle.readline() # "This is a test." fileHandle.close() Можно прочитать в файле несколько байт : fileHandle = open ( 'test.txt' ) print fileHandle.read ( 1 ) # "T" fileHandle.seek ( 4 ) print FileHandle.read ( 1 ) # "T" Для работы с файловой системой необходимо использовать модули os и stat . В следующем примере собирается информация о файле import os import stat import time fileStats = os.stat ( 'test.txt' ) fileInfo = { 'Size' : fileStats [ stat.ST_SIZE ], 'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ), 'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ), 'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ), 'Mode' : fileStats [ stat.ST_MODE ] } for infoField, infoValue in fileInfo: print infoField, ':' + infoValue if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): print 'Directory. ' else: print 'Non-directory.' Можно получить информацию о некоторых типах файлов : import os import stat fileStats = os.stat ( 'test.txt' ) fileMode = fileStats [ stat.ST_MODE ] if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ): print 'Regular file.' elif stat.S_ISDIR ( fileSTats [ stat.ST_MODe ] ): print 'Directory.' elif stat.S_ISLNK ( fileSTats [ stat.ST_MODe ] ): print 'Shortcut.' elif stat.S_ISSOCK ( fileSTats [ stat.ST_MODe ] ): print 'Socket.' elif stat.S_ISFIFO ( fileSTats [ stat.ST_MODe ] ): print 'Named pipe.' elif stat.S_ISBLK ( fileSTats [ stat.ST_MODe ] ): print 'Block special device.' elif stat.S_ISCHR ( fileSTats [ stat.ST_MODe ] ): print 'Character special device.' Можно получить базовую информацию : import os.path fileStats = 'test.txt' if os.path.isdir ( fileStats ): print 'Directory.' elif os.path.isfile ( fileStats ): print 'File.' elif os.path.islink ( fileStats ): print 'Shortcut.' elif os.path.ismount ( fileStats ): print 'Mount point.' Распечатать содержимое директории : import os for fileName in os.listdir ( '/' ): print fileName Создание директории : import os os.mkdir ( 'testDirectory' ) Удаление директории : import os os.rmdir ( 'testDirectory ) Создание нескольких директорий import os os.makedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) Точно также мы можем их удалить , при условии , что ничего туда не добавили : import os os.removedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) В следующем примере распечатаем содержимое всех файлов с расширением .txt и название файлов с расширением .exe : import fnmatch import os for fileName in os.listdir ( '/' ): if fnmatch.fnmath ( fileName, '*.txt' ): print open ( fileName ).read() elif fnmatch.fnmatch ( fileName, '*.exe' ): print fileName Найдем все файлы с расширением .txt , которые в названии состоят из одного символа : import fnmatch import os for fileName in os.listdir ( '/' ): if fnmatch.fnmatch ( fileName, '?.txt' ): print 'Text file.' Найдем все файлы с расширением .txt : import fnmatch import os import re filePattern = fnmatch.translate ( '*.txt' ) for fileName in os.listdir ( '/' ): if re.match ( filePattern, fileName ): print 'Text file.' Найдем еще раз все файлы с расширением .txt : import glob for fileName in glob.glob ( '*.txt' ): print 'Text file.' Найдем все файлы с расширением .txt , у которых в названии одна цифра: import glob for fileName in glob.glob ( '[0-9].txt' ): print fileName Для записи в файл массива строк можно использовать модуль pickle import pickle fileHandle = open ( 'pickleFile.txt', 'w' ) testList = [ 'This', 2, 'is', 1, 'a', 0, 'test.' ] pickle.dump ( testList, fileHandle ) fileHandle.close() Сохранение строк файла в массив import pickle fileHandle = open ( 'pickleFile.txt' ) testList = pickle.load ( fileHandle ) fileHandle.cloes() Более сложный вариант с сохранением в файл сложных обьектов : import pickle fileHandle = open ( 'pickleFile.txt', 'w' ) testList = [ 123, { 'Calories' : 190 }, 'Mr. Anderson', [ 1, 2, 7 ] ] pickle.dump ( testList, fileHandle ) fileHandle.close() import pickle fileHandle = open ( 'pickleFile.txt' ) testList = pickle.load ( fileHandle ) fileHandle.close() Модуль сЗickle похож по своему поведению на pickle , но более быстр : import cPickle fileHandle = open ( 'pickleFile.txt', 'w' ) cPickle.dump ( 1776, fileHandle ) fileHandle.close() Можно создавать файлы и обрабатывать их в памяти с помощью модуля StringIO import StringIO fileHandle = StringIO.StringIO ( "Let freedom ring." ) print fileHandle.read() # "Let freedom ring." fileHandle.close() Модуль cStringIO работает аналогично , но быстрее : import cStringIO fileHandle = cStringIO.cStringIO ( "To Kill a Mockingbird" ) print fileHandle.read() # "To Kill a Mockingbid" fileHandle.close()
Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье
Garry
  Спасибо за ваше старание! Сайт очень полезен для начианющих! Безполезной информации еще не видел... 
2011-02-12 04:37:47
Roman
  Спасибо! Очень полезно, указывает где копать, работает как трамплин:)
2011-09-27 10:51:57
twerp
  Большое спасибо!
Отличный справочник!
Трамплин :)
2012-04-06 13:39:09
Сергей
  Спасибо, очень помогло
2013-02-18 19:16:59
Юрий
  Спасибо, помогло
2014-04-13 04:29:41