我昨天写的博客已经简单的介绍了os操作,今天我再把os操作后面的分享一下。
我们可以在桌面新建一个名字为os测试的文件夹,然后在文件夹里面新建一个文本文档,命名为python;
我们可以用os来验证这个路径是否存在,当然别忘了要先引入os包。
import os
result = os.path.exists('C:/Users/Administrator/Desktop/os测试/python.txt')
print (result)
输出结果为:
True
也可以用来获取当前文件的绝对路径
import os
result = os.getcwd()
print(result)
输出结果为:
D:\Python\Python资料\csdn博客
获取当前文件的绝对路径还有一种方法:
import os
result = os.path.abspath('.')
print(result)
在计算机中,获取当前文件路径用一个.
获取父文件夹路径用两个..
import os
# 获取父文件夹路径
result = os.path.abspath('..')
print(result)
输出结果为:
D:\Python\Python资料
还能获取指定文件对应的绝对路径:
import os
result = os.path.abspath('周二.txt')
print(result)
输出结果为:
D:\Python\Python资料\csdn博客\周二.txt
获取文件路径的某一部分:
import os
result = os.path.basename('c:/user/administrator/desktop/os测试')
print('路径的basename:{}'.format(result))
输出结果为:
路径的basename:os测试
获取多个路径的公共部分:
import os
result = os.path.commonpath(['c:/user/administrator/desktop/os测试',
'c:/user/administrator/desktop/网易有道词典',
'c:/user/administrator/desktop/TIM'])
print('路径的公共部分为{}'.format(result))
# 注意:以/分割 将路径分成几部分 找到公共的这一个部分
result = os.path.commonpath(['http://www.baidu.com',
'http://www.taobao.com'
'http://www.google.com'])
print('网址的公共部分为:{}'.format(result))
输出结果为:
路径的公共部分为c:\user\administrator\desktop
网址的公共部分为:http:
获取指定文件所在的文件夹路径:
import os
result = os.path.dirname('C:/Users/Administrator/Desktop/os测试/python.txt')
print(result)
输出结果为:
C:/Users/Administrator/Desktop/os测试
获取文件信息
文件信息包括:创建日期 、修改日期、访问日期。
获取文件的创建日期和访问日期:
import os
import time
result = os.path.getctime('C:/Users/Administrator/Desktop/os测试')
print('文件创建日期为:{}'.format(time.localtime(result)))
result = os.path.getatime('C:/Users/Administrator/Desktop/os测试')
print('文件的访问日期是:{}'.format(time.localtime(result)))
输出结果为:
文件创建日期为:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=16, tm_min=28, tm_sec=0, tm_wday=0, tm_yday=183, tm_isdst=0)
文件的访问日期是:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=16, tm_min=28, tm_sec=44, tm_wday=0, tm_yday=183, tm_isdst=0)
获取文件的修改日期:
import os
import time
result = os.path.getmtime('C:/Users/Administrator/Desktop/os测试')
print('文件的修改日期是:{}'.format(time.localtime(result)))
输出结果为:
文件的修改日期是:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=16, tm_min=28, tm_sec=44, tm_wday=0, tm_yday=183, tm_isdst=0)
还可以用来获取文件的大小:
import os
result = os.path.getsize('C:/Users/Administrator/Desktop/os测试')
# 获取的大小 为字节大小 B
print('文件的大小为:{}'.format(result/1024))
输出结果为0,因为这个文件夹里面只有一个空的txt文本文档:
文件的大小为:0.0
判断文件是否存在:
import os
result = os.path.isfile('C:/Users/Administrator/Desktop/os测试/python.txt')
print('{}'.format(result))
输出结果为:
True
文件分割
把路径分割为两部分:
1.除最后路径外的全部路径;
2.最后路径。
import os
result = os.path.split('C:/Users/Administrator/Desktop/os测试/python.txt')
print('{}'.format(result))
输出结果为:
('C:/Users/Administrator/Desktop/os测试', 'python.txt')
1.全部路径;
2.文件后缀。
import os
result = os.path.splitext('C:/Users/Administrator/Desktop/os测试/python.txt')
print('{}'.format(result))
输出结果为:
('C:/Users/Administrator/Desktop/os测试/python', '.txt')
文件增删改的操作
创建一个名字为happy,编码方式为utf-8的txt文件:
import os
f = open('happy.txt','w',encoding='utf-8')
然后把happy.txt重命名为平凡之路.mp3:
import os
os.rename('happy.txt','平凡之路.mp3')
最后删除平凡之路.mp3:
import os
os.remove('平凡之路.mp3')
创建一个名为test的文件夹:
import os
os.mkdir('test')
说了这么多我们做一个小程序练练手吧:
要求如下:
1.随意输入一个数字 如果是1 创建一个文件夹名字为test_one
2.如果是2 删除一个文件夹 名字是test_one
3.如果是其他数字 返回
import os
info = input('请输入一个整数:')
info = int(info)
if info == 1:
if os.path.exists('test_one'):
print('此文件夹已存在')
else:
os.mkdir('test_one')
print('创建成功')
elif info == 2:
if os.path.exists('test_one'):
os.removedirs('test_one')
print('删除成功')
else:
print('没有此文件夹')
else:
pass
改变当前所在的目录:
print('{}'.format(os.path.abspath('.')))
print('{}'.format(os.getcwd()))
# change 改变 改变当前所在的目录
os.chdir('test')
# 获取路径 获取当前路径的父路径
os.path.abspath('..')
# 改变路径到指定的 路径下 pardir directory parent
os.chdir(os.path.pardir)
print('{}'.format(os.getcwd()))
文件读写
文件的写入:
如果文件不存在就会自动创建。
# w:write 写入内容 写入的时候 会将之前的内容清除掉
f = open('os.txt','w',encoding='utf-8')
f.write('Hello Word\n')
f.write('你好\n')
f.writelines(['张三\n','李四\n','王五\n'])
f.close()
f.close()是关闭文件;
当文件关闭后 不能再继续对文件进行操作,否则会报错 : ValueError: I/O operation on closed file.
练习1:
创建一个文件,名字为code.txt,在里面存放1000个6位随机数字的验证码。
第一种写法:
import os
import random
f = open('code.txt','w',encoding='utf-8')
for x in range(1000):
info = random.randint(0, 999999)
info = '%.6d'% info
f.write('{}\n'.format(info))
f.close()
第二种写法:
import os
import random
f = open('code.txt','w',encoding='utf-8')
for x in range(10000):
content = ''
for y in range(6):
#获取一个从0到9的数字
num = random.randint(0,9)
#将数字转化成字符 并和之前的字符串进行拼接
content += str(num)
f.write(content+ '\n')
f.close()
文件的读取:
import os
f = open('code.txt','r',encoding='utf-8')
content = f.read()
print(content)
#读取前22个字节
content = f.read(22)
print(content)
#读一行
content = f.readline()
print(content)
# 将读出的结果 放入列表中
content = f.readlines()
print(content)
f.close()
文件内容追加:
f= open('new.txt','w',encoding='utf-8')
f.write('人生三大难:早上吃啥,中午吃啥,晚上吃啥\n')
f.close()
# a : append 追加;添加
f= open('new.txt','a',encoding='utf-8')
f.write('啥都不想吃')
f.close()
第二段代码是追加内容的代码。
练习2:
创建一个文件,在里面存放1000个10位随机验证码;例如:asd8787aad。
这个练习题我写了三种写法:
第一种写法:
import random
f = open('random.txt','w',encoding='utf-8')
for x in range(1000):
# 从一个指定的字符串中随机获取字符,值1:指定的字符串;值2:随机获取字符的个数
num1 = random.sample('qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789', 10)
for y in num1:
f.write('{}'.format(y))
#追加一个换行符
f = open('random.txt', 'a', encoding='utf-8')
f.write('\n')
f.close()
第二种写法:
import random
str = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789'
with open('random.txt','w',encoding='utf-8') as f:
for index in range(1000):
content = ''
for x in range(10):
char_str = str[random.randint(0,len(str)-1)]
content += char_str
f.write(content + '\n')
f.close()
第三种写法:
import random
str = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789'
with open('random.txt','w',encoding='utf-8') as f:
for index in range(1000):
content = ''
for x in range(10):
#random.choice 如果对象是一个列表、元组或者字符串的时候
#从这个对象里面随机取出一块
char_str = random.choice(str)
content += char_str
f.write(content + '\n')
f.close()
练习3:
获取练习2中的文件,统计所有验证码中每一个数字出现的总次数。
#创建一个字典
data = {}
#用一个循环得到10个key和对应的值
for x in range(10):
data[str(x)] = 0
with open('random.txt','r',encoding='utf-8')as f:
for line in f.readlines():
for char in line :
for key in data :
if char == key :
data[key] += 1
print(data)
今天就分享到这里吧,明天还会更新呦=-=