Python廖雪峰教程学习笔记:Day13

前言

养成一个好的习惯只需要坚持21天,Day13

IO进程

  • StringIO和BytesIO

StringIO
数据的读写可以像上一节一样,对文件进行读写,同样我们也可以在内存中读写。StringIO可以在内存中读写str,和上一节的文件读写类似:

from io import StringIO
f = StringIO()
f.write('hello')
f.write(' ')
f.write('world!')
print(f.getvalue())
# hello world!

也可以直接用一个str初始化StringIO,然后,像读文件一样读取:

# test2
from io import StringIO
f = StringIO('Hello!\nHi!\nGoodbye!')
while True:
    s = f.readline()
    if s=='':
        break
    print(s.strip())
# Hello!
# Hi!
# Goodbye!

BytesIO

BytesIO操作二进制数据,可以在内存中读写bytes,可以直接用一个bytes初始化BytesIO:

#test3
from io import BytesIO
f = BytesIO()
f.write('中文'.encode('utf-8'))
print(f.getvalue())
#运行结果: b'\xe4\xb8\xad\xe6\x96\x87'
  • 操作文件和目录
    Python内置的os模块可以直接调用操作系统提供的接口函数,例如:
import os 
os.name()
#'posix'

如果是posix,说明系统是LinuxUnixMac OS X,如果是nt,就是Windows系统。
要获取详细的系统信息,可以调用uname()函数:

os.uname()
# posix.uname_result(sysname='Darwin', nodename='yanyukundeMacBook-Air.local', release='18.7.0', version='Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64', machine='x86_64')

操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中:

# 查看当前目录的绝对路径:
>>> os.path.abspath('.')
'/Users/Comme_moi'
# 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来:
>>> os.path.join('/Users/Comme_moi', 'testdir')
'/Users/Comme_moi/testdir'
# 然后创建一个目录:
>>> os.mkdir('/Users/Comme_moi/testdir')
# 删掉一个目录:
>>> os.rmdir('/Users/Comme_moi/testdir')

把两个路径合成一个时,我们要通过os.path.join()函数,在拆分路径的时候,通过os.path.split()函数,注意我们不要通过字符串的操作直接拼接和拆分路径。

>>> os.path.split('/Users/Comme_moi/testdir/file.txt')
#运行结果:  ('/Users/Comme_moi/testdir', 'file.txt')

os.path.splitext()函数可以直接让你得到文件扩展名,对于我们获取文件信息很方便:

>>> os.path.splitext('/path/to/file.txt')
# 运行结果: ('/path/to/file', '.txt')

接着,我们可以使用os模块中的函数对文件进行重命名和删除操作,但是模块中不存在复制函数,原因是复制文件并非由操作系统提供的系统调用。

# 对文件重命名:
>>> os.rename('test.txt', 'test.py')
# 删掉文件:
>>> os.remove('test.py')

练习
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。

import os

def search(path,name):
    # listdir可以列出给定的目录文件名
    file_list = os.listdir(path)
    # 遍历目录
    for x in file_list:
        # 判断要查找的文件名是否在目录中
        if name in x:
            # 输出查询文件的路径
            print(os.path.join(path,x))

path = input('请输入文件夹目录:')
name = input('请输入要查询的文件:')
search(path,name)
# 原文链接https://blog.csdn.net/qq_39138295/article/details/85096815
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章