繁体   English   中英

解压python目录下的.bz2文件

[英]Decompressing .bz2 files in a directory in python

我想解压缩一个文件夹中包含的一堆 .bz2 文件(其中还有 .zst 文件)。 我正在做的是以下内容:

 destination_folder = "/destination_folder_path/"

 compressed_files_path="/compressedfiles_folder_path/"

 dirListing = os.listdir(compressed_files_path)

 for file in dirListing:

     if ".bz2" in file:

        unpackedfile = bz2.BZ2File(file)
        data = unpackedfile.read()
        open(destination_folder, 'wb').write(data)

但我不断收到以下错误消息:

Traceback (most recent call last):
  File "mycode.py", line 34, in <module>
    unpackedfile = bz2.BZ2File(file)
  File ".../miniconda3/lib/python3.9/bz2.py", line 85, in __init__
    self._fp = _builtin_open(filename, mode)
FileNotFoundError: [Errno 2] No such file or directory: 'filename.bz2'

为什么我会收到此错误?

您必须确保您使用的所有文件路径都存在。 最好使用正在打开的文件的完整路径。


import os
import bz2


# this path must exist
destination_folder = "/full_path_to/folder/"

compressed_files_path = "/full_path_to_other/folder/"

# get list with filenames (strings)
dirListing = os.listdir(compressed_files_path)

for file in dirListing:
    # ^ this is only filename.ext
    if ".bz2" in file:
        
        # concatenation of directory path and filename.bz2
        existing_file_path = os.path.join(compressed_files_path, file)

        # read the file as you want
        unpackedfile = bz2.BZ2File(existing_file_path)
        data = unpackedfile.read()

        new_file_path = os.path.join(destination_folder, file)
        with bz2.open(new_file_path, 'wb') as f:
            f.write(data)

您还可以使用 shutil 模块来复制或移动文件。

os.path.exists

os.path.join

舒蒂尔

bz2 示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM