通编码读取文件内容-创新互联
通编码读取文件内容
# 通编码读取文件内容
def read_lines_from_file(file_path, coding="utf-8"):
line_content = []
if os.path.isfile(file_path):
try:
with open(file_path, encoding=coding) as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
# print(e)
try:
with open(file_path, encoding="gbk") as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
print(e)
return []
elif os.path.isdir(file_path):
print("%s is a dir! can not read content directly!" % file_path)
return []
else:
print("%s file path does not exist!" % file_path)
return []
升级
import os.path
def read_lines_from_file(file_path,coding="utf-8"):
'''此函数用于读取某个文件的所有行'''
if os.path.isfile(file_path):
#判断file_path参数是文件的情况
try:
#用utf-8编码去读取文件的所有行
with open(file_path,encoding=coding) as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
#print(e)
#用utf-8编码读取出异常后,用gbk去读取文件的所有行
try:
with open(file_path,encoding="gbk") as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
print(e)
return []
elif os.path.isdir(file_path):
#判断file_path参数是目录的情况
print("%s is a dir! can not read content directly!" %file_path)
return []
else:
#判断file_path参数即不是目录,也不是文件的情况
print("%s file path does not exist!" %file_path)
return []
#print(read_lines_from_file("e:\\笔记1.txt"))
#print(read_lines_from_file("e:\\test1111"))
def count_line_num(path,match_letters):
"""统计一个目录的包含某字符串的行数
path参数可以是目录路径也可以是文件路径"""
line_nums = 0
if not os.path.exists(path):
#判断路径在不在,不在的话返回0
print("%s does not exists!" %path)
return line_nums
elif os.path.isfile(path):
#当路径是文件的时候,用封装的read_lines_from_file
#读取所有行,然后在做计数
if ".txt" not in path:
return line_nums
for line in read_lines_from_file(path):
if match_letters in line:
line_nums+=1
return line_nums
elif os.path.isdir(path):
#当路径是目录的时候,用封装的read_lines_from_file
#读取所有行,然后在做计数
for root,dirs,files in os.walk(path):
for file in files:
if ".txt" not in file:
continue
file_path = os.path.join(root,file)
for line in read_lines_from_file(file_path):
if match_letters in line:
line_nums+=1
return line_nums
def get_specific_lines(path,match_letters):
"""统计一个目录的包含某字符串的所有行
path参数可以是目录路径也可以是文件路径"""
specific_lines =[]
if not os.path.exists(path):
print("%s does not exists!" %path)
return line_nums
elif os.path.isfile(path):
if ".txt" not in path:
return line_nums
for line in read_lines_from_file(path):
if match_letters in line:
specific_lines.append(line)
return line_nums
elif os.path.isdir(path):
for root,dirs,files in os.walk(path):
for file in files:
if ".txt" not in file:
continue
file_path = os.path.join(root,file)
for line in read_lines_from_file(file_path):
if match_letters in line:
specific_lines.append(line)
return specific_lines
#print(count_line_num("e:\\a.txt","ab"))
print(get_specific_lines("e:\\pic","ab"))
with open(r"e:\result.txt",'w') as fp:
fp.writelines(get_specific_lines("e:\\pic","ab"))
再次修改:
import os.path
class Data:
def __init__(self,path):
self.path =path
@staticmethod
def read_lines_from_file(file_path, coding="utf-8"):
'''此函数用于读取某个文件的所有行'''
if os.path.isfile(file_path):
# 判断file_path参数是文件的情况
try:
# 用utf-8编码去读取文件的所有行
with open(file_path, encoding=coding) as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
# print(e)
# 用utf-8编码读取出异常后,用gbk去读取文件的所有行
try:
with open(file_path, encoding="gbk") as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
print(e)
return []
elif os.path.isdir(file_path):
# 判断file_path参数是目录的情况
print("%s is a dir! can not read content directly!" % file_path)
return []
else:
# 判断file_path参数即不是目录,也不是文件的情况
print("%s file path does not exist!" % file_path)
return []
@staticmethod
def read_lines_from_file(file_path, coding="utf-8"):
'''此函数用于读取某个文件的所有行'''
if os.path.isfile(file_path):
# 判断file_path参数是文件的情况
try:
# 用utf-8编码去读取文件的所有行
with open(file_path, encoding=coding) as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
# print(e)
# 用utf-8编码读取出异常后,用gbk去读取文件的所有行
try:
with open(file_path, encoding="gbk") as fp:
line_content = fp.readlines()
return line_content
except Exception as e:
print(e)
return []
elif os.path.isdir(file_path):
# 判断file_path参数是目录的情况
print("%s is a dir! can not read content directly!" % file_path)
return []
else:
# 判断file_path参数即不是目录,也不是文件的情况
print("%s file path does not exist!" % file_path)
return []
@staticmethod
def count_line_num(path, match_letters):
"""统计一个目录的包含某字符串的行数
path参数可以是目录路径也可以是文件路径"""
line_nums = 0
if not os.path.exists(path):
# 判断路径在不在,不在的话返回0
print("%s does not exists!" % path)
return line_nums
elif os.path.isfile(path):
# 当路径是文件的时候,用封装的read_lines_from_file
# 读取所有行,然后在做计数
if ".txt" not in path:
return line_nums
for line in Data.read_lines_from_file(path):
if match_letters in line:
line_nums += 1
return line_nums
elif os.path.isdir(path):
# 当路径是目录的时候,用封装的read_lines_from_file
# 读取所有行,然后在做计数
for root, dirs, files in os.walk(path):
for file in files:
if ".txt" not in file:
continue
file_path = os.path.join(root, file)
for line in read_lines_from_file(file_path):
if match_letters in line:
line_nums += 1
return line_nums
@staticmethod
def get_specific_lines(path, match_letters):
"""统计一个目录的包含某字符串的所有行
path参数可以是目录路径也可以是文件路径"""
specific_lines = []
if not os.path.exists(path):
print("%s does not exists!" % path)
return specific_lines
elif os.path.isfile(path):
if ".txt" not in path:
return []
for line in Data.read_lines_from_file(path):
if match_letters in line:
specific_lines.append(line)
return specific_lines
elif os.path.isdir(path):
for root, dirs, files in os.walk(path):
for file in files:
if ".txt" not in file:
continue
file_path = os.path.join(root, file)
for line in read_lines_from_file(file_path):
if match_letters in line:
specific_lines.append(line)
return specific_lines
print(Data.read_lines_from_file("e:\\a.txt"))
print(Data.count_line_num("e:\\a.txt","ab"))
print(Data.get_specific_lines("e:\\a.txt","ab"))
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网站空间、营销软件、网站建设、康巴什网站维护、网站推广。分享名称:通编码读取文件内容-创新互联
网页网址:http://hbruida.cn/article/ddihpd.html