【问题标题】:Glob package in Python. FIle path is append with \\ instead of /. Expecting forward slash instead of 2 backslashesPython 中的 Glob 包。文件路径附加 \\ 而不是 /。期望正斜杠而不是 2 个反斜杠
【发布时间】:2019-12-29 16:01:11
【问题描述】:

我正在使用 glob API 将我的所有 CSV 加载到一个列表中。执行我的代码后,我意识到 data_list 中的结果在文件路径中追加 \ 而不是 / 在 csv 数据文件名之前。

我的python代码文件在这个位置:C:\Documents\python-workspace\analysis.py

我的 4 个 csv 数据在这个位置:

  1. C:\Documents\python-workspace\data\vitalstrike\user-site-export\data-1.csv

  2. C:\Documents\python-workspace\data\vitalstrike\user-site-export\data-2.csv

  3. C:\Documents\python-workspace\data\vitalstrike\user-site-export\data-3.csv

  4. C:\Documents\python-workspace\data\vitalstrike\user-site-export\data-4.csv

下面是我将文件加载到列表中的代码

import pandas as pd
import pandas_profiling
import glob

data_list = glob.glob('data/vitalstrike/user-site-export/data-*')
display(data_list)

执行代码后,我发现 data_list 中的结果将 csv 数据文件名附加为 '\\' 而不是 '/'。任何建议如何强制它 / ?

In[15]: display(data_list)
['data/vitalstrike/user-site-export\\data-1.csv',
 'data/vitalstrike/user-site-export\\data-2.csv',
 'data/vitalstrike/user-site-export\\data-3.csv']

【问题讨论】:

  • 这似乎有点像苹果和橘子的问题。为什么要使用/ 而不是本地操作系统路径分隔符?
  • 不要混合操作系统分隔符,在 Windows 上是 `\\`,所以在 glob(...) 中也可以使用它们。
  • 我想你可以通过简单地在任何 POSIX 兼容(或大部分兼容)系统上运行它来强制它。
  • 感谢 cmets。我正在使用 spyder IDE。当我在控制台上显示 data_list 中的值时,它会显示 data/vitalstrike/user-site-export\\data-1.csv。当我直接查看列表中的值时,它是一个 '\'
  • 其实我想将找到的 csv 文件名追加到文件路径为 /data-1.csv 而不是 \data-1.csv。

标签: python glob


【解决方案1】:

您可以使用os.path.join 创建全局参数以确保搜索模式使用正确的操作系统分隔符(取决于正在运行的操作系统):

import os
import glob

dirs = ['data', 'vitalstrike', 'user-site-export', 'data-*']
data_list = glob.glob(os.path.join(*dirs))

目录的输出:

data/vitalstrike/user-site-export/data-*  # Mac/*nix
data\vitalstrike\user-site-export\data-*  # Windows

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2014-04-12
    • 2011-11-25
    • 2019-01-28
    • 2017-03-16
    • 2013-07-23
    • 2013-11-14
    相关资源
    最近更新 更多