python文件读取

python文件读取

创建文件夹

  1. os.mkdir(absolute_path) 创建文件夹
  2. os.path.exists(absolute_path) 判断一个文件夹是否存在
  3. os.mkdirs('d:\\books\\book') 创建多层文件夹
  4. os.rmdir(absolute_path) 删除文件夹
def mkdir(absolute_path):
    # 去除首位空格
    absolute_path=absolute_path.strip()
    # 去除尾部 \ 符号
    absolute_path=absolute_path.rstrip("\\")
 
    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists=os.path.exists(absolute_path)
 
    # 判断结果
    if not isExists:
        ''' 如果不存在则创建目录
            创建目录操作函数 '''
        os.makedirs(absolute_path) 
        print(absolute_path+' 创建成功')
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print(absolute_path+' 目录已存在')
        return False
 
# 定义要创建的目录
mkpath="d:\\qttc\\web\\"
# 调用函数
mkdir(mkpath)

遍历文件夹

  1. os.walk()返回三元组 (root_dir_path, dir_names, file_names),分别代表根目录名称(str),所有目录名(list),所有非目录文件名(list)
for root_dir_path, dir_names, file_names in os.walk(root):
    for single_file in file_names:
        print os.path.join(root_dir_path, single_file)
  1. os.listdir(file_path) 返回目录下文件名的列表
for label_text in os.listdir(file_path):
   text_name = os.path.join(file_path, label_text)
   print(text_name)

从文本中读取文件

  1. read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
  2. readlines() 自动将文件内容分析成一个行的列表,一般建议用这个可迭代
  3. readline() 每次读一行但读到的是str对象,速度较readlines()
  4. 这三种方法都会把结尾的\n 读进来,因此要使用strip() 方法去掉末尾的换行符
with open('test1.txt', 'r') as f1:
    list1 = f1.readlines()
    for i in range(0, len(list1)):
        list1[i] = list1[i].rstrip('\n')
    print(list1)

关于文本读取的面试题

现有两个文件,每个文件包含很多行ip地址,找到两个文件中相同的ip地址:

# coding:utf-8
import bisect

with open('test1.txt', 'r') as f1:
    list1 = f1.readlines()
for i in range(0, len(list1)):
    list1[i] = list1[i].strip('\n')
with open('test2.txt', 'r') as f2:
    list2 = f2.readlines()
for i in range(0, len(list2)):
    list2[i] = list2[i].strip('\n')

list2.sort()  # 进行二分查找前第一步:排序
length_2 = len(list2)
same_data = []
for i in list1:
    pos = bisect.bisect_left(list2, i)
    if pos < len(list2) and list2[pos] == i:
        same_data.append(i)
same_data = list(set(same_data))  # 利用集合去重
print(same_data) 

对路径和文件名的切片

  1. os.path.splitext(“file_path”) 分离文件名(含路径)和后缀,返回一个二元组
path_01='D:/User/wgy/workplace/data/notMNIST_large.tar.gar'
path_02='D:/User/wgy/workplace/data/notMNIST_large'
root_01=os.path.splitext(path_01)
root_02=os.path.splitext(path_02)
print(root_01)
print(root_02)

输出结果:

('D:/User/wgy/workplace/data/notMNIST_large.tar', '.gar')
('D:/User/wgy/workplace/data/notMNIST_large', '')
  1. os.path.split(“file_path”) 分离路径和文件名,返回一个二元组
dirname,filename=os.path.split('/home/ubuntu/python_coding/split_func/split_function.py')
print(dirname)
print(filename)

输出结果:

/home/ubuntu/python_coding/split_func
split_function.py
  1. os.path.join() 将分离的部分合起来
filename=os.path.join('/home/ubuntu/python_coding','split_func')
print(filename)

输出结果:

/home/ubuntu/python_coding/split_func

你可能感兴趣的:(python)