700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python分割文件的常用方法

python分割文件的常用方法

时间:2019-02-24 05:26:58

相关推荐

python分割文件的常用方法

后端开发|Python教程

python,分割,文件

后端开发-Python教程

本文大家整理了一些比较好用的关于python分割文件的方法,方法非常的简单实用。分享给大家供大家参考。具体如下:

易语言 防wpe源码,vscode中js不提示,ubuntu 强制重装,tomcat运行完全正常,爬虫宠物新手,php转换特殊字符,鹤壁企业seo网络营销,带积分企业网站模板,变形金刚模板lzw

例子1 指定分割文件大小

ol手游源码,ubuntu安装分区选项,更改tomcat的启动端口,爬虫养车短篇,php生成随机,沧州seo排名优化要多少钱lzw

配置文件 config.ini:

多条件查询系统源码,ubuntu vi乱跳,tomcat8免安装版,美团手机爬虫,php微信公众号管理源码,贵州seo工资lzw

复制代码 代码如下:

[global]

#原文件存放目录

dir1=F:\work\python\3595\pyserver\test

#新文件存放目录

dir2=F:\work\python\3595\pyserver\test1

python 代码如下:

复制代码 代码如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import os,sys,ConfigParser

class file_openate(object):

def __init__(self):

#初如化读取数据库配置

dir_config = ConfigParser.ConfigParser()

file_config=open(config.ini,"rb")

dir_config.readfp(file_config)

self.dir1=str(dir_config.get("global","dir1"))

self.dir1=unicode(self.dir1,utf8)

self.dir2=str(dir_config.get("global","dir2"))

self.dir2=unicode(self.dir2,utf8)

file_config.close()

#print self.dir2

#self.dir1="F:\\work\\python\\3595\\pyserver\\test"

def file_list(self):

input_name_han="软件有不确认性,前期使用最好先备份,以免发生数据丢失,确认备份后,请输入要分割的字节大小,按b来计算".decode(utf-8)

print input_name_han

while 1:

input_name=raw_input("number:")

if input_name.isdigit():

input_name=int(input_name)

os.chdir(self.dir1)

for filename in os.listdir(self.dir1):

os.chdir(self.dir1)

#print filename

name, ext = os.path.splitext(filename)

file_size=int(os.path.getsize(filename))

f=open(filename, )

chu_nmuber=0

while file_size >= 1:

#print file_size

chu_nmuber=chu_nmuber + 1

if file_size >= input_name:

file_size=file_size - input_name

a=f.read(input_name)

os.chdir(self.dir2)

filename1=name + - + str(chu_nmuber) + ext

new_f=open(filename1,a)

new_f.write(a)

new_f.close()

#print file_size

else:

a=f.read()

os.chdir(self.dir2)

filename1=name + - + str(chu_nmuber) + ext

new_f=open(filename1,a)

new_f.write(a)

new_f.close()

break

print "分割成功".decode(utf-8) + filename

f.close()

else:

print "请输入正确的数字,请重新输入".decode(utf-8)

file_name=file_openate()

file_name.file_list()

例子2,按行分割文件大小

复制代码 代码如下:

#!/usr/bin/env python

#--*-- coding:utf-8 --*--

import os

class SplitFiles():

"""按行分割文件"""

def __init__(self, file_name, line_count=200):

"""初始化要分割的源文件名和分割后的文件行数"""

self.file_name = file_name

self.line_count = line_count

def split_file(self):

if self.file_name and os.path.exists(self.file_name):

try:

with open(self.file_name) as f : # 使用with读文件

temp_count = 0

temp_content = []

part_num = 1

for line in f:

if temp_count < self.line_count:

temp_count += 1

else :

self.write_file(part_num, temp_content)

part_num += 1

temp_count = 1

temp_content = []

temp_content.append(line)

else : # 正常结束循环后将剩余的内容写入新文件中

self.write_file(part_num, temp_content)

except IOError as err:

print(err)

else:

print("%s is not a validate file" % self.file_name)

def get_part_file_name(self, part_num):

""""获取分割后的文件名称:在源文件相同目录下建立临时文件夹temp_part_file,然后将分割后的文件放到该路径下"""

temp_path = os.path.dirname(self.file_name) # 获取文件的路径(不含文件名)

part_file_name = temp_path + "temp_part_file"

if not os.path.exists(temp_path) : # 如果临时目录不存在则创建

os.makedirs(temp_path)

part_file_name += os.sep + "temp_file_" + str(part_num) + ".part"

return part_file_name

def write_file(self, part_num, *line_content):

"""将按行分割后的内容写入相应的分割文件中"""

part_file_name = self.get_part_file_name(part_num)

print(line_content)

try :

with open(part_file_name, "w") as part_file:

part_file.writelines(line_content[0])

except IOError as err:

print(err)

if __name__ == "__main__":

sf = SplitFiles(r"F:\multiple_thread_read_file.txt")

sf.split_file()

上面只是进行了分割了,如果我们又要合并怎么办呢?下面这个例子可以实现分割与合并哦,大家一起看看。

例子3, 分割文件与合并函数

复制代码 代码如下:

#!/usr/bin/python

##########################################################################

# split a file into a set of parts; join.py puts them back together;

# this is a customizable version of the standard unix split command-line

# utility; because it is written in Python, it also works on Windows and

# can be easily modified; because it exports a function, its logic can

# also be imported and reused in other applications;

##########################################################################

import sys, os

kilobytes = 1024

megabytes = kilobytes * 1000

chunksize = int(1.4 * megabytes) # default: roughly a floppy

def split(fromfile, todir, chunksize=chunksize):

if not os.path.exists(todir): # caller handles errors

os.mkdir(todir) # make dir, read/write parts

else:

for fname in os.listdir(todir): # delete any existing files

os.remove(os.path.join(todir, fname))

partnum = 0

input = open(fromfile, b) # use binary mode on Windows

while 1: # eof=empty string from read

chunk = input.read(chunksize)# get next part <= chunksize

if not chunk: break

partnum = partnum+1

filename = os.path.join(todir, (part%04d % partnum))

fileobj = open(filename, wb)

fileobj.write(chunk)

fileobj.close() # or simply open().write()

input.close()

assert partnum <= 9999 # join sort fails if 5 digits

return partnum

if __name__ == \__main__:

if len(sys.argv) == 2 and sys.argv[1] == -help:

print Use: split.py [file-to-split target-dir [chunksize]]

else:

if len(sys.argv) < 3:

interactive = 1

fromfile = raw_input(File to be split? ) # input if clicked

todir = raw_input(Directory to store part files? )

else:

interactive = 0

fromfile, todir = sys.argv[1:3] # args in cmdline

if len(sys.argv) == 4: chunksize = int(sys.argv[3])

absfrom, absto = map(os.path.abspath, [fromfile, todir])

print Splitting, absfrom, o, absto, y, chunksize

try:

parts = split(fromfile, todir, chunksize)

except:

print Error during split:

print sys.exc_info()[0], sys.exc_info()[1]

else:

print Split finished:, parts, parts are in, absto

if interactive: raw_input(Press Enter key) # pause if clicked

join_file.py

复制代码 代码如下:

#!/usr/bin/python

##########################################################################

# join all part files in a dir created by split.py, to recreate file.

# This is roughly like a cat fromdir/* > tofile command on unix, but is

# more portable and configurable, and exports the join operation as a

# reusable function. Relies on sort order of file names: must be same

# length. Could extend split/join to popup Tkinter file selectors.

##########################################################################

import os, sys

readsize = 1024

def join(fromdir, tofile):

output = open(tofile, wb)

parts = os.listdir(fromdir)

parts.sort()

for filename in parts:

filepath = os.path.join(fromdir, filename)

fileobj = open(filepath, b)

while 1:

filebytes = fileobj.read(readsize)

if not filebytes: break

output.write(filebytes)

fileobj.close()

output.close()

if __name__ == \__main__:

if len(sys.argv) == 2 and sys.argv[1] == -help:

print Use: join.py [from-dir-name to-file-name]

else:

if len(sys.argv) != 3:

interactive = 1

fromdir = raw_input(Directory containing part files? )

tofile = raw_input(Name of file to be recreated? )

else:

interactive = 0

fromdir, tofile = sys.argv[1:]

absfrom, absto = map(os.path.abspath, [fromdir, tofile])

print Joining, absfrom, o make, absto

try:

join(fromdir, tofile)

except:

print Error joining files:

print sys.exc_info()[0], sys.exc_info()[1]

else:

print Join complete: see, absto

if interactive: raw_input(Press Enter key) # pause if clicked

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。