Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中定义文件对象列表_Python_Arrays_Python 2.7_Object - Fatal编程技术网

如何在python中定义文件对象列表

如何在python中定义文件对象列表,python,arrays,python-2.7,object,Python,Arrays,Python 2.7,Object,为了定义指向文件的单个文件对象,在python中,我们只需编写: f = open ('file_name.txt','wb') 我想知道,如果有几个(比如说50个)文件,如何创建一个包含50个文件对象的数组(或者在python术语列表中),每个对象都指向一个名称中具有相同索引的文本文件 以下是如何创建文件列表: myfiles=[] for i in range(3): f = open ('file'+str(i),'wb') myfiles.append(f) myfi

为了定义指向文件的单个文件对象,在python中,我们只需编写:

f = open ('file_name.txt','wb')

我想知道,如果有几个(比如说50个)文件,如何创建一个包含50个文件对象的数组(或者在python术语列表中),每个对象都指向一个名称中具有相同索引的文本文件

以下是如何创建文件列表:

myfiles=[]
for i in range(3):
    f = open ('file'+str(i),'wb')
    myfiles.append(f)

myfiles[0].write("hello world")

Python中的列表只是引用的集合,它们可以引用您想要的任何内容,包括文件对象

files = [
           open("file1.txt",'wb')
           open("file2.txt",'wb')
           open("file3.txt",'wb')
           ...
        ]
根据您希望如何收集它们,您可能会使用生成器。比如说

files = [open("file_{}".format(x),'wb') for x in range(12)]
或者,如果要从文件夹中获取所有文件:

files = [open(file, 'wb') for file in os.listdir(yourFolder)]

但要小心打开太多,因为这可能会导致记忆问题。

除了Guilaume的答案外,您还可以使用如下列表理解(文档):

myFiles = [open('file'+str(i)+'.txt', 'wb') for i in range(3)]

myFiles[0].write('hello world')

文件和Python中的其他对象一样都是对象。因此,正如您可以使用将字符串放入列表
lst

lst[n] = "value"

因此,当您理解
open()
函数返回文件对象时,您可以使用

lst[n] = open(filename, 'wb')

因此,要创建一个打开文件的列表,您只需使用循环中计算文件名的最后一个示例(尽管如果已经有文件名列表,您也可以轻松地迭代文件名列表)

这可以在使用列表理解的单个表达式中更紧凑(但也更不透明)地实现。口味不同

file_list = [open("file{}.txt".format(i), 'wb') for i in range(50)]

虽然打开50个文件不太可能在现代操作系统上造成问题,您应该知道,操作系统所需的资源有上限。

内存问题比可用文件描述符不足要少。我怀疑您为什么会认为这是一个好主意。我有兴趣知道预期的应用程序是什么,或者这个问题仅仅是出于好奇。但我可以想到一些可能是个好主意的应用程序(例如将一个文件拆分为多个文件,每个文件对应于字母表的大写或小写字母)。@holdenweb它可能对需要单独分类的日志记录有用。但是我不确定什么时候用列表而不是字典来做这件事是有益的。我们都可以想象用例,不是吗?但它们与这个问题相关吗?
lst.append(open(filename, 'wb')
file_list = []
for i in range(50):
    filename = "file{}.txt".format(i)
    file_list.append(open(filename, 'wb'))
file_list = [open("file{}.txt".format(i), 'wb') for i in range(50)]