python多个文件
‘壹’ 关于多个python文件共享数据
简单。一个是通过线程同步。另一个就是全局变量global,加上这个修饰就可以了。python一个进程里的所有东西,都是在一个内存空间的。只要加了global就可以访问。可以用这个全局变量通讯,效果也是一样的。python一个进程只用一个CPU核。所以不存在楼下说的地址空间不一样的问题。
进程间同步也有几个方法。通常使用共享内存,管道,不过最常用的还是socket或者是数据库。还有些分布式组件不是很好用。我通常用mutliprocessing,里面有现成的进程通信办法。
看到你的需求。我觉着可以用两个变量,一个变量记录修改状态,另一个变量要求先锁再进行修改。目前看来如果仅仅是python里实现。直接使用memcache这个工具就可以解决。一个程序读写,其它的程序只需要轮洵就可以了。从原理上讲memcache是一个内存数据库。
‘贰’ python怎么一次性下载多个文件
我觉得最简单的办法借助celery分布式下载,或者手写多线程、多进程进行文件下载。
‘叁’ 多个python文件相互调用
假如a.py这个文件有一个函数fun,那么在b.py这个文件就可以调用这个函数,只需要写一行代码即可:from a import fun
‘肆’ 怎么将多个python打包成exe文件
1、安装pywin32,可以参考《怎么给python安装pywin32模块?》,一定要注意对应的python版本,否则不能安装。
‘伍’ python 处理几万个文件
我们可以在GNU / Linux操作系统上使用2.2Ghz四核处理器和16GB RAM。当前脚本仅使用一个处理器。利用其他内核和RAM来更快地处理图像的最佳方法是什么?启动多个Python进程来运行脚本会利用其他内核吗?
另一个选择是使用Gearman或Beanstalk之类的东西将工作分配给其他机器。我已经看了多处理库但不知道如何利用它。
解决方案
启动多个Python进程来运行脚本会利用其他内核吗?
是的,如果任务受CPU约束,它将会。这可能是最简单的选择。但是,不要为每个文件或每个目录生成单个进程; 考虑使用像这样的工具,parallel(1)并让它产生每个核心两个进程的东西。
另一个选择是使用Gearman或Beanstalk之类的东西将工作分配给其他机器。
那可能有用。另外,看看ZeroMQ的Python绑定,它使分布式处理变得非常简单。
我已经看了多处理库但不知道如何利用它。
比如定义一个函数,process它读取单个目录中的图像,连接到数据库并存储元数据。让它返回一个表示成功或失败的布尔值。我们directories是目录处理的列表。然后
import multiprocessing
pool = multiprocessing.Pool(multiprocessing.cpu_count())
success = all(pool.imap_unordered(process, directories))
将并行处理所有目录。如果需要,您还可以在文件级执行并行操作; 这需要更多的修修补补。
请注意,这将在第一次失败时停止; 使其容错需要更多的工作。
‘陆’ python 用循环创建多个文件
os.system命令可以调用外部命令
组合latex
和
zip的命令行版本工具
就可以实现你所需要的功能
用i来命名文件很简单
for
i
in
range(1,51):
filename
=
"%d.tex"
%
(i)
这样filename变量里存储的就是
"1.tex"
这样的字符串了.
压缩文件的话
我只知道7zip是
7z
a
<压缩档名>
<要压缩的文件名>
其中
要压缩的文件名
可以有多个
示例:
7z
a
file.zip
1.tex
2.tex
3.tex
...
10.tex
这样一个命令
就可以实现:)
至于7z.exe
可以到7-zip的官方网站上下载命令行版本的7z,
压缩包里会有个7za.exe,改名一下就好
:)
‘柒’ python 合并多个 excel
思路
利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中。
完整代码
# -*- coding: utf-8 -*-
#将多个Excel文件合并成一个
import xlrd
import xlsxwriter
#打开一个excel文件
def open_xls(file):
fh=xlrd.open_workbook(file)
return fh
#获取excel中所有的sheet表
def getsheet(fh):
return fh.sheets()
#获取sheet表的行数
def getnrows(fh,sheet):
table=fh.sheets()[sheet]
return table.nrows
#读取文件内容并返回行内容
def getFilect(file,shnum):
fh=open_xls(file)
table=fh.sheets()[shnum]
num=table.nrows
for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata)
return datavalue
#获取sheet表的个数
def getshnum(fh):
x=0
sh=getsheet(fh)
for sheet in sh:
x+=1
return x
if __name__=='__main__':
#定义要合并的excel文件列表
allxls=['F:/test/excel1.xlsx','F:/test/excel2.xlsx']
#存储所有读取的结果
datavalue=[]
for fl in allxls:
fh=open_xls(fl)
x=getshnum(fh)
for shnum in range(x):
print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
rvalue=getFilect(fl,shnum)
#定义最终合并后生成的新文件
endfile='F:/test/excel3.xlsx'
wb1=xlsxwriter.Workbook(endfile)
#创建一个sheet工作对象
ws=wb1.add_worksheet()
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c=rvalue[a][b]
ws.write(a,b,c)
wb1.close()
print("文件合并完成")
合并后
‘捌’ python 多个文件怎么调用
同时打开三个文件,文件行数一样,要求实现每个文件依次读取一行,然后输出,我们先来看比较容易想到的写法:
with open(filename1, 'rb') as fp1:
with open(filename2, 'rb') as fp2:
with open(filename3, 'rb') as fp3:
for i in fp1:
j = fp2.readline()
k = fp3.readline()
print(i, j, k)
注意这里只能对单个文件进行for循环读取,不能写成:
for i, j, k in fp1, fp2, fp3:
print(i, j, k)
但可使用强大的zip操作:
for i, j, k in zip(fp1, fp2, fp3):
print(i, j, k)
这样层层的嵌套未免啰嗦,with结构支持一种更简洁的写法:
with open(filename1, 'rb') as fp1, open(filename2, 'rb') as fp2, open(filename3, 'rb') as fp3:
for i in fp1:
j = fp2.readline()
k = fp3.readline()
print(i, j, k)
或者使用更为优雅的写法,此时需要contextlib语法糖:
from contextlib improt ExitStack
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in [filename1, filename2, filename3]]
for i, j, k in zip(files[0], files[1], files[2]):
print(i, j, k)
‘玖’ python 如何把多个文件内容合并到以一个文件
Python编程将多个文件合并,代码如下:
#例子:合并a.txt、b.txt、c.txt合并成d.txt文件
#文件列表,遍于读取
flist = ['a.txt','b.txt','c.txt']
#要写入的文件
ofile = open('d.txt', 'w')
#遍历读取所有文件,并写入到输出文件
for fr in flist:
for txt in open(fr, 'r'):
ofile.write(txt)
ofile.close()
效果如下:
‘拾’ 如何将多个Python文件
直接写就可以了。
比如文件名为variable.py,内容如下:
1234
mylist
=
[1,2,3]a
=
4b
=
'456'……
然后,在其他文件中直接引用就可以了。
import
variable
然后
variable.a,
variable.b