tangjun112

一、IS

open,encoding 默认值是cp936

文件 file:功能,对单个文件进行读写操作

 

# encoding = utf-8
with open("a.txt", "r+", encoding=\'utf-8\') as f: # 对于用字节模式(如:rb,wb,ab等)打开的文件,不可以指定encoding参数。
    print(f.seek(0, 2))  # 移到光标到文件尾 返回光标位置
    # def seek(self, offset: int, whence: int = 0) -> int:
    # offset:移动多少字节,对于文本模式打开的文件,只能从文件首向后移(即whence参数为0,也是默认值),或者直接跳到文件尾,(offset是0和whence是2)
    # whence:从什么位置开始移动,0:文件首,1:当前位置,2:文件尾 对于用字节模式(如:rb,wb,ab等)打开的文件,可以从文件尾向前移动光标
    # seek(x, 0) : 从起始位置即文件首行首字符开始移动x个字节,注意是字节而不是字符,对于中文字符(一个汉字占3个字节),随便移动可能会造成乱码
    # seek(x, 1) : 表示从当前位置往后移动x个字节 仅适用于字节模式(如:rb,wb,ab等)打开的文件
    # seek(-x, 2): 表示从文件的结尾往前移动x个字符  仅适用于字节模式(如:rb,wb,ab等)打开的文件
    # 在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置(即,开头或结尾)进行定位。,开头的话可以向后移,结尾的话不能向前移,只能是跳到结尾,即:seek(0,2)

    num = f.write(\'你好,我是一个好人啊\n你呢?\')  # 返回写入的字符数
    print(num)  # 9
    print(f.tell())  # 27 光标所处的位置(字节)一个汉字占3个字节

    f.seek(0)
    print(f.readline())


    # f.close()  # 释放资源,用with的时候它会帮你自动关闭

print(f.closed)  # True

 

1、读方法:

1)read() 读取所有内容,可以传递一个参数读取指定字节数,当文件大小为当前机器内存两倍时,就会产生问题。反之,会尽可能按比较大的 size 读取和返回数据。如果到了文
件末尾, f.read() 会返回一个空字符串( \'\' ):

2)readline() 读取一行  参数是字符数(不是字节数)表次最多读入多少字符,可以省略,如果 f.readline() 返回一个空字符串,那就表示到达了文件末尾,如果是一个空行,就会描述为 \'\n\'

3)readlines() 读取N行到list 参数也是字符数,同上,可以省略,也可以把文件直接包装成一个 list 如5)

4)你可以循环遍历文件对象来读取文件中的每一行。这是一种内存高效、快速,并且代码简介的方式: for in 这种方式每次能读取一行

for line in f:
    print(line, end=\'\')

5)把文件直接包装成一个list,作用同3)

f = open(\'a.txt\', encoding=\'utf-8\')
l = list(f)
print(l)  # [\'你你好,我是一个好人啊\n\', \'你呢?你好,我是一个好人啊\n\', \'你呢?\']

 

2、写方法

1)f.write(string) 方法将 string 的内容写入文件,并返回写入字符的长度:

 

二、os  功能:对文件和文件进行操作,不对文件内容进行读写

 

import os

print(os.listdir(\'.\'))  # 获得指定目录下的文件和文件夹,默认为当前目录。该方法不能遍历,walk可以遍历

# 测试文件或文件夹
# os.F_OK:文件是否存在  os.R_OK:文件是否可读  os.W_OK:文件是否可写  os.X_OK:文件是否可执行
print(os.access("com", os.F_OK))

# 切换当前目录到指定目录
# os.chdir(\'F:\')
# print(os.listdir())  # 显示F:下的所有文件和文件夹
print(os.getcwd()) # D:\myPython 当前目录的绝对路径  os.path.abspath(".") # 是指定目录的绝对路径
# os.rename(\'b.txt\', \'a.txt\') 修改文件或文件夹的名字

os.unlink(r"F:\\bbb\ccc.txt") # 删除单个文件,也可以用remove os.remove(\'a.txt\') # 删除文件,不能删除文件夹,也可以用unlink # os.mkdir(\'a\') # os.makedirs("F:\\aaa\\bbb\ccc") # 创建多个文件夹 if os.path.exists(\'aaa1\'): os.rmdir(\'aaa1\') # 删除空文件夹,如果文件夹不为空则报错 gener = os.walk(r\'F:\abt\') # 返回一个生成器:generator,是一个函数,由yield返回值,跟迭代器iterator使用方法一样。
for a, b, c in os.walk(\'E:\\myPy\'):
# print(a,b,c)
pass

gn = os.walk(\'E:\\myPy\')
print(next(gn)) # (\'E:\\myPy\', [\'.idea\', \'venv\'], [\'main.py\'])


print(os.curdir) # 获得当前目录,相当于\'.\' print(os.pardir) # 获得父目录,相当于\'..\'

 

 

二、os.path

import os
import datetime

print(os.path.abspath("."))  # 指定目录的绝对路径,os.getcwd()是当前目录的绝对路径。d:\myPython abspath是绝对路径,‘.’是当前路径,相当于path.curdir
print(os.path.abspath(".."))  # d:\ ".." 相当于pardir

print(os.path.basename(r"d:\myPython\abc.txt"))  # abc.txt
print(os.path.basename(r"d:\myPython\abc"))  # abc

print(os.path.dirname(r"d:\myPython\abc.txt"))  # d:\myPython
print(os.path.dirname(r"d:\myPython\abc"))  # d:\myPython

print(os.path.split(r"d:\myPython\abc.txt"))  # (\'d:\\myPython\', \'abc.txt\') 可以同时获得basename和dirname
os.path.join(os.getcwd(), \'txt.zip\') # 拼接成一个完整路径

print(os.path.exists("a.txt")) # True 可以判断文件或文件夹是否存在

 print(os.path.exists("pic")) # True 可以判断文件或文件夹是否存在

os.path.exists(\'G:\\\') # 可以用来检查是否插入U盘



 print(os.path.isdir("pic")) # True 是否是目录 

print(os.path.isfile("a.txt")) # True 是否是文件

 print(os.path.getsize("a.txt")) # 136 以字节为单位 

 t = os.path.getatime("a.txt") # 返 回最后一次的访问时间 
t = os.path.getmtime("a.txt") # 返 回最后一次的修改时间

 t = os.path.getctime("a.txt") # 返 回创建的时间 # 返 回值是一个 UNIX 时间戳 ( 1970 年 l 月 1 日 00:00:00 以来 至 现在的总秒数 
dt = datetime.datetime.fromtimestamp(t)
 print(dt) # 2020-09-21 04:44:52.699126

另:

os.system(\'系统命令\')  # 这里可以输入cmd里的所有windows命令

 shutil模块

import shutil, os

# shutil.copy("F:\ccc.txt", "F:\\aaa\\")  # 复制文件,可以省略文件名或重命名文件名
# shutil.copytree("F:\\aaa", "F:\\bbb")  # 复制文件夹及里面的所有内容
# shutil.move(r"F:\\aaaa.txt", r"F:\\bbb\\abc.txt")  # 移动(或改名,如果目标文件或文件夹不存在创建并改名,自己测试,不用记)文件或文件夹

# shutil.rmtree(\'F:\\bbb\')   # 删除文件夹及里面的所有内容,小心,不进回收站的,要使用回收站可以安装send2trash 模块

 

分类:

技术点:

相关文章:

  • 2021-09-20
  • 2022-12-23
  • 2021-09-21
  • 2021-05-21
  • 2021-10-20
  • 2021-10-27
猜你喜欢
  • 2021-12-03
  • 2021-08-28
  • 2022-03-07
  • 2022-12-23
  • 2022-02-24
  • 2021-04-12
  • 2021-10-01
相关资源
相似解决方案