首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python:将os.Path代码转换为路径库代码

python:将os.Path代码转换为路径库代码
EN

Stack Overflow用户
提问于 2021-10-31 14:45:12
回答 1查看 146关注 0票数 3

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

代码语言:javascript
运行
复制
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
    # ...

首先,我不明白为什么路径库应该更好,其次,我不知道如何翻译上面提到的行,即如何使用路径库表示法来真正完成os.path.join(folder_path,filename)。

在path库中,对于windows和其他机器,它似乎是不同的方法,而且对于什么是posix路径(docs 这里),我也没有看到任何解释。

有人能帮我解决这两条线吗?欢迎深入了解为什么使用Pathlib而不是os.path。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-31 19:54:41

首先,我不明白为什么路径库应该更好。

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

然而,pathlib确实使生活变得更简单。第一,正如Henry在注释中提到的,您处理的是路径对象,而不是字符串,因此在构建路径之后,您可以少做错误检查,其次,path对象的实例方法就在这里可以使用。

有人能帮我解决这两条线吗?

使用您的例子:

代码语言:javascript
运行
复制
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在函数的其余部分中具有一致的类型。
  • 可以使用除法操作符/构造子Path对象,这就是我对total_file所做的&实际上不需要将f'{filename}.{extension}'包装在Path对象中。很干净!参考文献
  • 除了路径字符串之外,pandas.DataFrame.to_[filetype]方法都接受一个Path对象,因此您不必担心修改代码的这一部分。

在path lib中,对于windows和其他机器,它似乎是不同的方法,而且对于posix路径是什么,我也没有看到任何解释。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69787664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档