我尝试从包含一个文件夹中的子文件夹的.zip中提取所有文件.我希望子文件夹中的所有文件只在一个文件夹中提取,而不保留原始结构.此刻,我提取所有内容,将文件移动到文件夹,然后删除以前的子文件夹.具有相同名称的文件被覆盖.
在写文件之前可以这样做吗?
这是一个结构,例如:
my_zip/file1.txt
my_zip/dir1/file2.txt
my_zip/dir1/dir2/file3.txt
my_zip/dir3/file4.txt
Run Code Online (Sandbox Code Playgroud)
最后我告诉你:
my_dir/file1.txt
my_dir/file2.txt
my_dir/file3.txt
my_dir/file4.txt
Run Code Online (Sandbox Code Playgroud)
我可以在此代码中添加什么内容?
import zipfile
my_dir = "D:\\Download\\"
my_zip = "D:\\Download\\my_file.zip"
zip_file = zipfile.ZipFile(my_zip, 'r')
for files in zip_file.namelist():
zip_file.extract(files, my_dir)
zip_file.close()
Run Code Online (Sandbox Code Playgroud)
如果我从zip_file.namelist()重命名文件路径,我有这个错误:
KeyError: "There is no item named 'file2.txt' in the archive"
Run Code Online (Sandbox Code Playgroud) 任何人都可以帮我创建一个函数,它将使用pathlib
库创建某个目录下的所有文件的列表吗?
在这里,我有一个:
我有
c:\desktop\test\A\A.txt
c:\desktop\test\B\B_1\B.txt
c:\desktop\test\123.txt
我希望有一个列表可以有上面的路径,但我的代码返回一个嵌套列表.
这是我的代码:
from pathlib import Path
def searching_all_files(directory: Path):
file_list = [] # A list for storing files existing in directories
for x in directory.iterdir():
if x.is_file():
file_list.append(x)
else:
file_list.append(searching_all_files(directory/x))
return file_list
p = Path('C:\\Users\\akrio\\Desktop\\Test')
print(searching_all_files(p))
Run Code Online (Sandbox Code Playgroud)
希望有人能纠正我.
我现在已经学习python大约3个星期了,我现在正在尝试编写一个小脚本来按文件名中出现的关键字和日期对文件进行排序(大约10.000).应将给定日期之前的文件添加到存档中.排序工作正常,但不是归档
它创建一个存档 - 名称很好 - 但在存档中是文件的完整路径.如果我打开它,它看起来像:folder1 -> folder2 -> folder3 -> files
.
如何更改它,使归档只包含文件而不是整个结构?
下面是一个带有我的zip功能的片段,node
是排序前文件的路径,folder
是一个子文件夹,其中的文件按名称中的关键字排序,items
是按日期排序的文件夹.
我使用的是Python 2.6
def ZipFolder(node, zipdate):
xynode = node + '/xy'
yznode = node + '/yz'
for folder in [xynode,yznode]:
items = os.listdir(folder)
for item in items:
itemdate = re.findall('(?<=_)\d\d\d\d-\d\d', item)
print item
if itemdate[0] <= zipdate:
arcname = str(item) + '.zip'
x = zipfile.ZipFile(folder + '/' + arcname, mode='w', compression = zipfile.ZIP_DEFLATED)
files = os.listdir(folder + '/' + …
Run Code Online (Sandbox Code Playgroud)