Python tudo sobre Arquivos e I/O
January 05, 2020
Read a File
In Python 2, the content of the file which read from file system does not decode. That is, the content of the file is a byte string, not a Unicode string.
>>> with open("/etc/passwd") as f:
... content = f.read()
>>> print(type(content))
<type 'str'>
>>> print(type(content.decode("utf-8")))
<type 'unicode'>In Python 3,
open provides
encoding option. If files do not open in binary mode, the encoding
will be determined by locale.getpreferredencoding(False) or user’s
input.
>>> with open("/etc/hosts", encoding="utf-8") as f:
... content = f.read()
...
>>> print(type(content))
<class 'str'>Binary mode
>>> with open("/etc/hosts", "rb") as f:
... content = f.read()
...
>>> print(type(content))
<class 'bytes'>Readline
>>> with open("/etc/hosts") as f:
... for line in f:
... print(line, end='')
...
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhostReading File Chunks
>>> chunk_size = 16
>>> content = ''
>>> with open('/etc/hosts') as f:
... for c in iter(lambda: f.read(chunk_size), ''):
... content += c
...
>>> print(content)
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhostWrite a File
>>> content = "Awesome Python!"
>>> with open("foo.txt", "w") as f:
... f.write(content)Create a Symbolic Link
>>> import os
>>> os.symlink("foo", "bar")
>>> os.readlink("bar")
'foo'Copy a File
>>> from distutils.file_util import copy_file
>>> copy_file("foo", "bar")
('bar', 1)Move a File
>>> from distutils.file_util import move_file
>>> move_file("./foo", "./bar")
'./bar'List a Directory
>>> >>> import os
>>> dirs = os.listdir(".")After Python 3.6, we can use os.scandir to list a directory. It is
more convenient because os.scandir return an iterator of os.DirEntry
objects. In this case, we can get file information through access the
attributes of os.DirEntry. Further information can be found on the
document.
>>> with os.scandir("foo") as it:
... for entry in it:
... st = entry.stat()
...Create Directories
Similar to mkdir -p /path/to/dest
>>> from distutils.dir_util import mkpath
>>> mkpath("foo/bar/baz")
['foo', 'foo/bar', 'foo/bar/baz']Copy a Directory
>>> from distutils.dir_util import copy_tree
>>> copy_tree("foo", "bar")
['bar/baz']Remove a Directory
>>> from distutils.dir_util import remove_tree
>>> remove_tree("dir")Path Join
>>> from pathlib import Path
>>> p = Path("/Users")
>>> p = p / "Guido" / "pysheeet"
>>> p
PosixPath('/Users/Guido/pysheeet')Get Absolute Path
>>> from pathlib import Path
>>> p = Path("README.rst")
PosixPath('/Users/Guido/pysheeet/README.rst')Get Home Directory
>>> from pathlib import Path
>>> Path.home()
PosixPath('/Users/Guido')Get Current Directory
>>> from pathlib import Path
>>> p = Path("README.rst")
>>> p.cwd()
PosixPath('/Users/Guido/pysheeet')Get Path Properties
>>> from pathlib import Path
>>> p = Path("README.rst").absolute()
>>> p.root
'/'
>>> p.anchor
'/'
>>> p.parent
PosixPath('/Users/Guido/pysheeet')
>>> p.parent.parent
PosixPath('/Users/Guido')
>>> p.name
'README.rst'
>>> p.suffix
'.rst'
>>> p.stem
'README'
>>> p.as_uri()
'file:///Users/Guido/pysheeet/README.rst'Acesse a Referência original 1: Acesse a Referência original 2: