python 学习记录-用python从硬盘中读写文件 Day21

(一)文件操作
文件操作步骤:
第一步: 打开文件
f = open(文件名, 操作模式, encoding=文件编码)
第二步: 读写文件
f.read()
f.write()
第三步: 关闭文件
f.close()

(二)文件夹操作
①创建文件夹
②获取当前目录
③获取目录列表
④删除文件夹


打开文件与读取文件

在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
open(文件名,访问模式)
python 学习记录-用python从硬盘中读写文件 Day21_第1张图片

# encoding 常见的有两种: utf-8 什么都能支持 ,  gbk 中文编号
f = open('test.txt', 'r', encoding='utf-8')
data = f.read() # 默认把整个文件都读入进来
f.close() # 关闭文件
print(data)
#上面的代码是放在和py文件相同目录下时使用,如果文件路径不同的话用下面方式读取
f = open('D:/Users/mac/Downloads/calulation.py', 'r', encoding='utf-8')
data = f.read()
f.close()

$$ 文件指针
文件读写中有指针的概念存在, 打开文件时默认指针处于文件内容开头, 当读取文件全部内容后, 指针移动到文件末尾.

当文件处于指针末尾时, 是无法读取文件中的字符串的. 而这时如果写入字符串, 会写入到当前文件最后.

read方法默认会直接读取文件全部内容, 因为read方法运行一次后, 指针会处于文件末尾, 这时再次运行read, 无法读取内容.

read方法也可以通过参数空值向后读取几个字节

f.read(5)

$$ 移动指针seed方法

# 将指针移到开头位置
f.seek(0)

$$指针向后读取一段(readline)

data = f.readline()
data

$$一次性读取全部数据(readlines)
就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素

f = open("test.txt", "r", encoding='utf-8')
data = f.readlines()
f.close()
data[0]

$$如担心忘记关闭文件, 也可是使用自动关闭文件的写法(with)

with open('test.txt','r',  encoding='utf-8') as f:
    # 你对文件操作的代码
    data = f.read()

可以用 f.closed() 来检查文件是否已关闭


打开文件与写入文件

写文件和读文件是两个相对应的过程, 基本使用方法和read没有太大区别

# 如果原文件已存在, 会清空
# 如果原文件不存在, 会新建
f = open('aaa.txt', 'w', encoding='utf-8')
content="君不见,黄河之水天上来,奔流到海不复回"
f.write(content)
f.close() # 关闭文件的时候, 内容才会真正被写入

可以多次写入, 最后关闭才会全部写入

$$ 将列表内容写入(writelines)

# 写文件中, 如果文件不存在, 则会新建文件, 如果文件已经存在, 则会清空原文件
f = open('test_write.txt', 'w', encoding='utf-8')
L = ['abc', 'mno', 'xyz']
f.writelines(L)
f.close()

$$ 追加模式
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

# 追加模式中, 默认打开文件指针处于文件结尾
f = open('test_write.txt', 'a', encoding='utf-8')

二进制文件的读写

默认模式为t(text)文本操作模式, 如果要操作二进制文件(图片, 视频, 音频等), 需要使用二进制模式b(binary)

二进制文件读取

# 加上b就是二进制模式, 没有编码
f = open('图片.jpg', 'rb')
# 二进制
data = f.read()
f.close()

二进制文件写入

f = open('D:/Users/mac/Downloads/beautiful.jpg', 'wb')
f.write(data)
f.close()

二进制文件先读后写相当于把文件打开,然后有另存为一个新的地址.


文件夹操作

$$ 文件重命名
os模块中的rename()可以完成对文件的重命名操作
rename(需要修改的文件名, 新的文件名)

import os
os.rename('我有一个梦想.txt', 'Ihaveadream.txt')

$$ 删除文件
os模块中的remove()可以完成对文件的删除操作
remove(待删除的文件名)

import os
os.remove('Ihaveadream.txt')

$$ 创建文件夹

import os
os.mkdir('测试')

$$ 获取当前目录

import os
os.getcwd()

$$ 获取目录列表

import os
os.listdir('D:/Users/mac/Downloads')

$$ 删除文件

import os
os.rmdir('测试')

$$ os方法大全

import os

print(os.getcwd())        # 获得当前工作目录
print(os.chdir("dirname")) # 改变当前脚本的工作路径,相当于shell下的cd
print(os.curdir)            # 返回当前目录‘.'
print(os.pardir)            # 获取当前目录的父目录字符串名‘..'
print(os.makedirs('dirname1/dirname2'))     # 可生成多层递归目录
print(os.removedirs('dirname1/dirname2'))      # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
print(os.mkdir('test4'))         # 生成单级目录;相当于shell中mkdir dirname
print(os.rmdir('test4'))        # 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
print(os.listdir('/pythonStudy/s12/test'))   # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(os.remove('log.log'))            # 删除一个指定的文件
print(os.rename("oldname","newname"))    # 重命名文件/目录)
print(os.stat('/pythonStudy/s12/test'))     # 获取文件/目录信息
print(os.pathsep)            # 输出用于分割文件路径的字符串';'
print(os.name)               # 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
print(os.system(command='bash'))   # 运行shell命令,直接显示
print(os.environ)                  # 获得系统的环境变量
print(os.path.abspath('/pythonStudy/s12/test'))   # 返回path规范化的绝对路径
print(os.path.split('/pythonStudy/s12/test'))     # 将path分割成目录和文件名二元组返回
print(os.path.dirname('/pythonStudy/s12/test'))    # 返回path的目录。其实就是os.path.split(path)的第一个元素
print(os.path.basename('/pythonStudy/s12/test'))   # 返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
print(os.path.exists('test'))                 # 判断path是否存在
print(os.path.isabs('/pythonStudy/s12/test'))    # 如果path是绝对路径,返回True
print(os.path.isfile('test'))                   # 如果path是一个存在的文件,返回True。否则返回False
print(os.path.isdir('/pythonStudy/s12/test'))    # 如果path是一个存在的目录,则返回True。否则返回False
print(os.path.getatime('/pythonStudy/s12/test'))   # 返回path所指向的文件或者目录的最后存取时间
print(os.path.getmtime('/pythonStudy/s12/test'))   # 返回path所指向的文件或者目录的最后修改时间

你可能感兴趣的:(python)