python文件处理和导入模块

一、读取文件

1.打开文件

open(文件名,打开文件的模式,encoding="UTF-8") 打开一个文件

注意点:
  被打开的文件和当前文件在同一路径下,可以写文件名
  被打开的文件和当前文件不在同一路径下,可以写绝对路径
                但是在写绝对路径时,记得 open(r"C:\Users\Administrator\PycharmProjects\untitled1\aaa.txt", "r", encoding="UTF-8")
                             转义r,

# 一般情况,如果开头打开了,那么结尾就要关闭 open与close是一对

f = open("aaa.txt", "r")
# content = f.read()
# print(content)  # 报错,是编码的原因 'gbk' codec can't decode byte 0x9f in position 12: illegal multibyte sequence

# 1.打开
f1 = open("aaa.txt", "r", encoding="UTF-8")
# 2.读取所有的内容
content_1 = f1.read()
print(content_1)  # hello python  最好的语言是python

# 3.关闭文件
f.close()        # 前面有open,那么结尾就得加上close

2.读取文件

read():读取文件中所有的内容
readline():每次读取一行内容
readline()按行把所有的内容,读取到一个列表中,每一行都是列表中的一个元素

# 1.打开
f = open(r"C:\Users\Administrator\PycharmProjects\example\day_01\abc.txt", "r", encoding="UTF-8")
# 2.读取内容
# 第一种方式:read()读取所有的内容
 content = f.read()
 print(content)

# 第二种方式:readline()每次读取一行内容
 content1 = f.readline()
#  print(content1)  # 默认读取第一行
 print('1', content1)   # 打印文件中第一行内容
 print('2', f.readline())  # 打印文件中第二行内容
 print('3', f.readline())  # 打印文件中第三行内容
#
# # 假设我要读取3行,怎么读取?读取指定行数
 for i in range(3):
     print(f.readline())


# 第三种方式:readlines()按行把所有的内容,读取到一个列表中,每一行都是列表中的一个元素
content3 = f.readlines()
print(content3)
# 如果读取第七行的内容
 c7 = f.readlines()[6]
 print(c7)

# 3.关闭文件
f.close()

二、写入文件

r:只读模式(read),如果文件不存在则会报错
w:写入模式(write),覆盖写入(会清楚原来的内容)如果文件不存在则会自动创建
a:写入模式(append),追加写入(在原有文件的尾部,写入新的内容),如果文件不存在则会自动创建

 ***扩展另外三种:
  # 通常用来读取非文本模式(图片、表格、)
  rb:只读模式(read),以二进制模式打开的,如果文件不存在则会报错
  wb:写入模式(write),以二进制模式打开的,覆盖写入(会清楚原来的内容)如果文件不存在则会自动创建
  ab:写入模式(append),以二进制模式打开的,追加写入(在原有文件的尾部,写入新的内容),如果文件不存在则会自动创建

# 打开
f = open("aaa.txt", "w", encoding="utf-8")
# 写入内容
f.write("123456789")
# 关闭
f.close()

print("----------------------------------------------------")

# 打开
f = open("aaa.txt", "a", encoding="utf-8")
# 写入内容
f.write("wuefbevjnklsdjcubjk")
# 关闭
f.close()


# 图片的复制
f1 = open("Devops.png", "rb")  # 先读取
f2 = open("copy_image.png", "wb")  
con = f1.read()
f2.write(con) # 再写入
f1.close()
f2.close()

三、with操作文件

通过上下文管理器with去打开文件,操作完之后会自动关闭文件

with open("Devops.png", "rb") as f:
    con = f.read()

with open("002.png", "wb") as f2:
    f2.write(con)

我们在写python代码时,一般都是这种with去操作文件,对文件进行处理,因为方便好用,用的多

四、模块和包

模块:在python中,只要是以.py结尾的文件都可以称之为模块

包:包含了一个一个_init_.py文件的文件夹就可以称之为python的一个包

模块导入:

    import  模块名

    from 包名(如果存在多级嵌套的情况) import 模块名

        (如果存在多级嵌套的情况,需要一级一级往下找)

导入模块中的某个函数或者变量:

      from 模块名 import 变量名/函数

      from 包名.模块名 import 变量名/函数

from xxx import xxx  as 别名  (这个也常用!!!)

# 模块导入
# 方式一:导入整个模块
import test01
# 方式二、导入模块中的部分内容
from test01 import a
print(a)
# 这个波浪线并不是代码写错了,pycharm识别不出我们自定义的这个模块
from test01 import work
work()
# 扩展
# 通过as给导入进来的方法或者变量重新起个名字(别名)
# work也可以被叫做w1,如果两个方法或者函数名有重名的时候可以使用as,不然导入的数据会被覆盖掉
from test01 import work as w1
w1()
# 同时导入模块中的多个方法和函数和变量
from test01 import a,work,num
print(a)
print(num)

# 导入模块中所有的内容(不推荐使用)
from test01 import *
print(a)
print(num)
work()

# 包导入
# from 包名 import 模块名
# from 包名.模块名 import 模块中的变量或方法
# from pack01 import module1

module1.m_func1()
print(module1.aa)
print(module1.bb)

from pack01.module1 import aa,bb
print(aa)
print(bb)

其实,说了这么多,几乎就是这两条:

  模块导入

    方式一:import 模块名

    方式二:from 模块名 import 模块中的变量或者函数

  包导入

    方式一:from 包名 import 模块名

    方式二:from 包名.模块名 import 模块中的变量或者函数

  或者再在后面as别名

 

关于python中包导入的搜索路径

import sys

sys.path

 

你可能感兴趣的:(python文件处理和导入模块)