文件操作
切换文件目录,并显示当前目录下的文件信息
import os
import subprocess
path = "/etc"
os.chdir(path)
#显示当前路径
ret = subprocess.getoutput('pwd')
print(ret)
#显示当前目录路径文件夹
print("当前路径下的目录:", os.listdir(os.getcwd()))
#显示文件
files = [f for f in os.listdir() if os.path.isfile(f)]
print(files)
#显示目录
files = [f for f in os.listdir() if os.path.isdir(f)]
print(files)
glob显示指定目录文件
import os
import glob
list = glob.glob("/tmp/*.txt")
print(list)批量创建文件
import os
def touchtext(paths):
for i in range(1, 21, 1):
filepath = os.path.join(paths, f"{i}.txt")
txtcontent = filepath + " write information"
with open(filepath, "a+", encoding="utf-8") as f:
f.write(txtcontent)
touchtext("/tmp")
自定义文件名创建文件
import os
def createdir(dirs):
filepath = os.path.join(dirs, "filename.txt")
with open(filepath, "r", encoding="utf-8") as f:
#列表推导建立新的列表结构,并用strip去掉前后空格
name_list = [i.strip() for i in f.readlines()]
print(name_list)
for name in name_list:
with open(f"/tmp/{name}", "w", encoding="utf-8") as f:
f.write("")
createdir("/tmp")
修改文件名称
import os
path1 = "/tmp"
extension = ".txt"
list1 = os.listdir(path1)
list2 = []
for cur_file in list1:
path = os.path.join(path1, cur_file)
if os.path.isfile(path):
if path.endswith(extension) and len(cur_file) <= 5:
#动态添加列表,这里没有作用
list2.append(cur_file)
dst_name = path1 + "/" + "0" + cur_file
sre_name = path
os.rename(sre_name, dst_name)
print(list2)
删除文件夹,含非空文件夹,两种方法:引用shutil或函数逐层处理
import shutil shutil.rmtree(r'/tmp/abc')
import os
def rmdir(dir):
if os.path.isdir(dir):
for file in os.listdir(dir):
print(file)
rmdir(os.path.join(dir, file))
if os.path.exists(dir):
os.rmdir(dir)
print(dir, "删除文件夹")
else:
if os.path.exists(dir):
os.remove(dir)
print(dir, "删除文件")
rmdir("/tmp/abc")删除文件
import os
def delete_files(directory, extension):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(extension):
file_path = os.path.join(root, file)
os.remove(file_path)
print(f"Deleted file: {file_path}")
# 设置要删除文件的目录和文件扩展名
directory = "/path/to/directory"
extension = ".txt"
# 调用删除文件函数
delete_files(directory, extension)按创建时间删除文件
import os
import time
def delete_files_by_days(directory, days):
current_time = time.time()
seconds_in_a_day = 24 * 60 * 60
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
file_creation_time = os.path.getctime(file_path)
days_since_creation = (current_time - file_creation_time) / seconds_in_a_day
if days_since_creation > days:
os.remove(file_path)
print(f"Deleted file: {file_path}")
# 设置要删除文件的目录和文件创建天数
directory = "/path/to/directory"
days = 30
# 调用按文件创建天数删除文件函数
delete_files_by_days(directory, days)