[英]How to create Panda Dataframe from csv that is compressed in tar.gz?
[英]How to cut tar.gz extension from filename
我在从文件名中删除扩展名时遇到问题。 我试着用
os.path.splitext(checked_delivery)[0]
,但它只从文件名中删除.gz
。 我需要检查文件是否有扩展名或者它是一个目录。 我是用这个做的:
os.path.exists(delivery)
但另一个问题是,我无法将其拆分为数据原因(YYYY.MM.DD)。 我应该使用join()
还是它更有吸引力而不是大量的方法和 ifs?
我提出以下小功能:
def strip_extension(fn: str, extensions=[".tar.bz2", ".tar.gz"]):
for ext in extensions:
if fn.endswith(ext):
return fn[: -len(ext)]
raise ValueError(f"Unexpected extension for filename: {fn}")
assert strip_extension("foo.tar.gz") == "foo"
我提出了一个通用的解决方案,使用pathlib
模块从字符串中删除文件扩展名。 IMO,现在使用os
来管理路径并不方便。
import pathlib
def remove_extention(path: pathlib.PosixPath) -> path.PosixPath:
suffixes = ''.join(path.suffixes)
return pathlib.Path(str(path).replace(suffixes, ''))
如果您知道扩展名始终是 .tar.gz,您仍然可以使用 split:
In [1]: fname = 'RANDOM_FILE-2017.06.07.tar.gz'
In [2]: '.'.join(fname.split('.')[:-2])
Out[2]: 'RANDOM_FILE-2017.06.07'
来自 os.path.splitext 的文档字符串:
"Extension is everything from the last dot to the end, ignoring leading dots. "
在 gzip 压缩包的情况下,无论如何这是有道理的,因为文件 'FILE.tar.gz' 是 'FILE.tar' 的 gzipped 版本,它大概是由文件 'FILE' 制作的 tarball
这就是为什么你需要为此使用 os.path.splitext 以外的东西,如果你需要的是原始文件名,没有 .tar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.