Python的os操作

我昨天写的博客已经简单的介绍了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)
今天就分享到这里吧,明天还会更新呦=-=

猜你喜欢

转载自blog.csdn.net/qq_42543312/article/details/80902946