gpt4 book ai didi

python:将 os.Path 代码转换为 Pathlib 代码

转载 作者:行者123 更新时间:2023-12-04 14:01:44 27 4
gpt4 key购买 nike

我在 python 中有以下函数,用于将字典作为行添加到 pandas DF,如果尚不存在,它还负责创建第一个空 DF。我使用库 os 但我想更改为 Pathlib,因为我咨询了我公司的软件开发人员,有人说我应该使用 pathlib 而不是 os.Path 来解决这些问题。 (注意,我没有 CS 背景)

def myfunc(dictt,filename, folder='', extension='csv'):
if folder == '':
folder = os.getcwd(). #---> folder = Path.cwd()
filename = filename + '.' + 'csv'
total_file = os.path.join(folder,filename) #<--- this is what I don't get translated

# check if file exists, otherwise create it
if not os.path.isfile(total_file):#<----- if total file is a Path object: totalfile.exists()
df_empty = pd.DataFrame()
if extension=='csv':
df_empty.to_csv(total_file)
elif extension=='pal':
df_empty.to_pkl(total_file)
else:
#raise error
pass


# code to append the dict as row
# ...

首先我不明白为什么 path lib 应该更好,其次我不明白如何翻译上面提到的行,即如何真正使用 pathlib 执行 os.path.join(folder_path, filename)符号。

在路径库中,它似乎是 Windows 和其他机器的不同方法,而且我也没有看到关于什么是 posix 路径的解释(文档 here)。

谁能帮我解决这两行问题?欢迎深入了解为什么使用 Pathlib 而不是 os.path。谢谢

最佳答案

First I don't understand why path lib is supposed to be better.

pathlib 为 os.path 提供的相同功能提供面向对象的接口(interface)。使用 os.path 本质上没有错。在 pathlib 出现之前,我们(python 社区)一直在愉快地使用 os.path

但是,pathlib 确实让生活变得更简单。首先,正如 Henry Ecker 在评论中提到的那样,您处理的是路径对象,而不是字符串,因此在构建路径后您要做的错误检查较少,其次,路径对象的实例方法就在那里被使用。

Can anyone help me with those two lines?

使用你的例子:

def mypathlibfunc(dictt, filename, folder='', extension='csv'):
if folder == '':
folder = pl.Path.cwd()
else:
folder = pl.Path(folder)

total_file = folder / f'{filename}.{extension}'
if not total_file.exists():
# do your thing
df_empty = pd.DataFrame()
if extension == 'csv':
df_empty.to_csv(total_file)
elif extension == 'pal':
df_empty.to_pickle(total_file)

注意事项:

  • 如果您的函数是使用 folder != '' 调用的,则会从中构建一个 Path 对象,这是为了确保 folder 在函数的其余部分具有一致的类型。
  • child Path 对象可以使用除法运算符 / 构造,这就是我为 total_file 所做的,我实际上并不需要将 f'{filename}.{extension}' 包装在 Path 对象中。挺整洁的! reference
  • pandas.DataFrame.to_[filetype] 方法除了路径字符串外都接受 Path 对象,因此您不必担心修改该部分你的代码。

In path lib it seems to be different approaches for windows and other machines, and also I don't see an explanation as to what is a posix path

如果你使用Path对象,它将是跨平台的,你不必担心windows & posix路径。

关于python:将 os.Path 代码转换为 Pathlib 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69787664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com