基本文件操作——Python數據工程No.1

獲取當前Python程序運行路徑

import os
print(os.getcwd())

自動處理路徑鏈接

import os
print(os.path.join('project', 'all'))

文件、文件夾的輸出

import os
files = os.listdir()
for file in files:
	print(file, os.path.isdir(file))

for file in os.scandir():
	print(file.name, file.path, file.is_dir())

遍歷文件夾

import os
for dirpath, dirnames, files in os.walk('./'):
	print(f'發現文件夾 : {dirpath}')
	print(files)

搜索、匹配文件名稱

import os
import glob
import fnmatch

print('name.txt'.startswith('na'))
print('name.txt'.endswith('txt'))
print(glob.glob('*.py'))
print(glob.glob('**/*.txt', recursive=Ture))
print(fnmatch.fnmatch('name1.py', 'name*.py'))
print(fnmatch.fnmatch('name1.py', 'name[0-9].pu'))

查詢文件信息

import os
import time
import datetime

for file in os.scandir():
	print(file.stat())
	print(file.name, time.ctime(file.stat().st_mtime))
	print(file.name, time.ctime(file.stat().st_atime))
	print(file.name, time.ctime(file.stat().st_ctime))
	that_time = datetime.datetime.fromtimestamp(file.stat().st_ctime)
	print(that_time.hour, that_time.minute, that_time.second)

寫入和讀取文件

f = open('name1.txt', 'r', encoding='utf-8')
text = f.readlines()
print(text)
f.close

with open('name1.txt', 'r', encoding='utf-8') as f:
	text = f.readlines()
	print(text)

向文件寫入數據

with open('name1.txt', 'a', encoding='utf-8') as f:
	text = 'first line content \n second line content\n'
	f.write(text)
	f.write('third line content')

創建臨時文件、文件夾

from tempfile import TemporayFile
from tempfile import TemporaryDirectory

f = TemporaryFile('w+')
f.write('Hello python')
f.seek(0)
data = f.readlines()
print(data)
f.close()

with TemporaryDirectory() as tmp_folder:
	print(f'臨時文件夾已經創建' : {tmp_folder})

創建文件夾

import os
os.mkdir('new filedir name')
os.makedirs('firstfold//secondfold//thirdfold')

文件的複製、移動、重命名

import shutil
shutil.copy('name1.txt', '/newfold')
shutil.copy('name1.txt', '/newfold/newfile.txt')
shutil.copy('onefold', 'newfold')

移動文件、文件夾

import shutil
shutil.move('name1.txt', 'newflod/name2.txt')
shutil.move('name1.txt', 'newfold/')
shutil.move('onefold', 'newfold/')

刪除、重命名文件和文件夾

import os
import shutil

os.rename('name1.txt', 'newname.txt')
os.remove('name1.txt')
shutil.rmtree('willremovefold')

讀取壓縮包

import zipfile

with zipfile.ZipFile('onezip.zip', 'r') as zipobj:
	print(zipobj.namelist())
	for file_name in zipobj.namelist():
		print(file_name.encode(‘cp437’).decode(‘gbk’))

讀取壓縮包內文件信息

import zipfile

with zipfile.ZipFile('onezip.zip', 'r') as zipobj:
	for file_name in zipobj.namelist():
		info = zipobj.getinfo(file_name)
		file_name = file_name.encode(‘cp437’).decode(‘gbk’)
		print(file_name, info.file_size, info.compress_size)

解壓壓縮包

import zipfile

with zipfile.ZipFile('onezip.zip', 'r') as zipobj:
	zipobj.extract('onefile.txt')
with zipfile.ZipFile('onezip.zip', 'r') as zipobj:
	zipobj.extractall('pathdir'. pwd=b'ciphercode')

創建壓縮包

import zipfile

file_list = ['file1.py', 'file2.py', 'file3.py', 'file4.py', 'file5.py']
with zipfile.ZipFile('onezip.zip', 'w') as zipobj:
	for file in file_list:
		zipobj.write(file)

向壓縮包內追加文件

import zipfile

with zipfile.ZipFile('onezip.zip', 'a') as zipobj:
	zipobj.write('file2.txt')

附錄 涉及Python模塊的連接
[1] Python os模塊參考
[2] Python glob模塊參考
[3] Python fnmatch模塊參考
[4] Python time模塊參考
[5] Python datetime模塊參考
[6] Python shutil模塊參考
[7] Python tempfile模塊參考
[8] Python zipfile模塊參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章