我有一个tar文件,里面有多个文件.我需要编写一个python脚本,它将读取文件的内容并给出总字符数,包括字母总数,空格,换行符,所有内容,而不用解压缩tar文件.
我有一个.gz文件,我需要使用python获取其中的文件名。
这个问题是一样的这一个
唯一的区别是我的文件.gz不是,.tar.gz所以tarfile库在这里没有帮助我
我正在使用requests库来请求URL。响应是一个压缩文件。
这是我用来下载文件的代码
response = requests.get(line.rstrip(), stream=True)
if response.status_code == 200:
with open(str(base_output_dir)+"/"+str(current_dir)+"/"+str(count)+".gz", 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
Run Code Online (Sandbox Code Playgroud)
例如,此代码以名称下载文件1.gz。现在,如果我使用存档管理器打开文件,则该文件将包含以下内容my_latest_data.json
我需要提取文件,输出为my_latest_data.json。
这是我用来提取文件的代码
inF = gzip.open(f, 'rb')
outfilename = f.split(".")[0]
outF = open(outfilename, 'wb')
outF.write(inF.read())
inF.close()
outF.close()
Run Code Online (Sandbox Code Playgroud)
该outputfilename变量是我在脚本中提供的字符串,但是我需要真实的文件名(my_latest_data.json)
我有一个名为gziptest.tar.gz的压缩文件夹,其中包含几个纯文本文件。
我希望能够获取文件名和文件的相应内容,但是gzip库的用法示例未涵盖此内容。
如下代码:
import gzip
in_f = gzip.open('/home/cholloway/gziptest.tar.gz')
print in_f.read()
Run Code Online (Sandbox Code Playgroud)
产生输出:
gzip test/file2000664 001750 001750 00000000016 12621163624 015761 0ustar00chollowaycholloway000000 000000 I like apples
gzip test/file1000664 001750 001750 00000000025 12621164026 015755 0ustar00chollowaycholloway000000 000000 hello world
line two
gzip test/000775 001750 001750 00000000000 12621164026 015035 5ustar00chollowaycholloway000000 000000
Run Code Online (Sandbox Code Playgroud)
我可以使用一些正则表达式来检测新文件的开头并提取文件名,但是我想知道gzip或其他标准python库中是否已存在此功能。