Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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/Linux-在读取文件时解压_Python_Command Line - Fatal编程技术网

Python/Linux-在读取文件时解压

Python/Linux-在读取文件时解压,python,command-line,Python,Command Line,我有数百个压缩的CSV文件。这是伟大的,因为他们占用很少的空间,但当它是时候使用它们,我必须作出一些空间,我的HD和解压他们之前,我可以处理。我想知道是否可以使用python(或linux命令行)在读取文件时解压缩文件。换句话说,我想打开一个zip文件,开始解压缩文件,然后处理文件 因此,我的驱动器上不需要额外的空间。有什么想法或建议吗?虽然可以用Python打开ZIP文件,但也可以使用文件系统扩展透明地处理此操作。这是否可取取决于各种因素,包括系统访问和解决方案可移植性 见: 使用fuse-z

我有数百个压缩的CSV文件。这是伟大的,因为他们占用很少的空间,但当它是时候使用它们,我必须作出一些空间,我的HD和解压他们之前,我可以处理。我想知道是否可以使用python(或linux命令行)在读取文件时解压缩文件。换句话说,我想打开一个zip文件,开始解压缩文件,然后处理文件


因此,我的驱动器上不需要额外的空间。有什么想法或建议吗?

虽然可以用Python打开ZIP文件,但也可以使用文件系统扩展透明地处理此操作。这是否可取取决于各种因素,包括系统访问和解决方案可移植性

见:

使用fuse-zip,您可以将zip存档作为真实目录使用。与KIO或Gnome VFS不同,它可以在任何应用程序中使用,无需修改

或:

AVFS是一个系统,它允许所有程序查看gzip、tar、zip等文件或查看远程(ftp、http、dav等)文件,而无需重新编译程序


请注意,这些解决方案是特定于系统的,并且依赖于。Windows可能也有类似的透明解决方案,但这需要对特定系统进行另一次调查。

Python,因为1.6版本提供了处理此类情况的模块。用法示例:

import csv
import zipfile

with zipfile.ZipFile('myarchive.zip') as archive:
    with archive.open('the_zipped_file.csv') as fin:
        reader = csv.reader(fin, ...)
        for record in reader:
            # process record.
注意,在python3中,事情变得有点复杂,因为
archive.open
返回的类似文件的对象产生字节,而
csv.reader
需要字符串。您可以编写一个简单的类,使用给定的编码将字节转换为字符串:

class EncodingConverter:
    def __init__(self, fobj, encoding):
        self._iter_fobj = iter(fobj)
        self._encoding = encoding
    def __iter__(self):
        return self
    def __next__(self):
        return next(self._iter_fobj).decode(self._encoding)
然后像这样使用它:

import csv
import zipfile

with zipfile.ZipFile('myarchive.zip') as archive:
    with archive.open('the_zipped_file.csv') as fin:
        reader = csv.reader(EncodingConverter(fin, 'utf-8'), ...)
        for record in reader:
            # process record.

我和这个家伙有同样的问题:,但是在Linux上看看,我想这可能就是你要找的。
zcat文件| grep | awk{……}等|等|排序|等
?祝你好运