- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
下面是文件夹结构:
我已尝试使用以下代码将报告 .json
保存到输出目录中,并且我想将其重命名为与 untar
文件名相同的 3884b56e33d16dd68faa4f1f25c28200.json
。
下面是代码:
import tarfile
import os
outdir=os.mkdir("C:\\Users\\esrilka\\Documents\\Tar Files\\Untar Files3")
t = tarfile.open("C:\\Users\\esrilka\\Documents\\Tar Files\\3884b56e33d16dd68faa4f1f25c28200.tar.gz", 'r')
for member in t.getmembers():
print(member)
if "autodiscovery/report" in member.name:
print("true")
t.extract(member='autodiscovery\report.json',path='outdir')
print (os.listdir('outdir'))
如何将报告.json
保存到输出目录并重命名该文件。
最佳答案
您应该使用反斜杠转义反斜杠文字:
t.extract(member='autodiscovery\\report.json',path='outdir')
或者您可以使用原始字符串:
t.extract(member=r'autodiscovery\report.json',path='outdir')
但是既然你有这种情况:
if "autodiscovery/report" in member.name:
您应该使用正斜杠来代替提取:
t.extract(member='autodiscovery/report.json',path='outdir')
此外,os.mkdir
不会返回它创建的目录名称,因此您的 outdir
变量将为 None
。您应该直接将路径名分配给outdir
:
outdir="C:\\Users\\esrilka\\Documents\\Tar Files\\Untar Files3"
os.mkdir(outdir)
然后将其用于 os.mkdir
和提取(请注意 outdir
周围缺少引号):
t.extract(member='autodiscovery/report.json',path=outdir)
编辑:现在您提到要提取 report.json
而不包含 autodiscovery
目录(该目录是其在 tar 文件中的路径的一部分),您必须使用extractfile
方法而是自己将内容写入所需的位置:
with open(os.path.join(outdir, 'report.json'), 'w') as f:
f.write(t.extractfile('autodiscovery/report.json').read())
如果您想将 report.json
重命名为 tar 文件的名称,您只需打开不同名称的文件即可:
with open(os.path.join(outdir, '3884b56e33d16dd68faa4f1f25c28200.json'), 'w') as f:
如果您希望该名称与 tar 文件相同,请使用 os.path.splitext 两次来获取它(因为有两个扩展名,.tar
和 .gz
,用于您的 tar 文件),因此一开始您应该执行以下操作:
archive = "C:\\Users\\esrilka\\Documents\\Tar Files\\3884b56e33d16dd68faa4f1f25c28200.tar.gz"
basename = os.path.basename(os.path.splitext(os.path.splitext(archive)[0])[0])
t = tarfile.open(archive, 'r')
然后当你打开json文件进行写入时:
with open(os.path.join(outdir, basename + '.json'), 'w') as f:
关于Python:我不想解压文件夹,只想将特定文件保存到输出文件夹。我没有得到预期的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52439911/
我目前在我的 master 分支上。我需要 CSS 方面的帮助,但不幸的是我的网站受身份验证保护。这使得其他人很难来我的站点进行调试。我计划开始一个新的分支,fixing_css,第一次提交删除所有身
我是一名优秀的程序员,十分优秀!