【问题标题】:Get specific parts of a file path in Python在 Python 中获取文件路径的特定部分
【发布时间】:2014-11-12 01:11:52
【问题描述】:

我有一个像

这样的路径字符串
'/path/eds/vs/accescontrol.dat/d=12520/file1.dat'

Q1:我怎样才能从路径中只获得accescontrol.dat

Q2:我怎样才能从路径中只获得/path/eds/vs/accescontrol.dat

【问题讨论】:

  • 指定accescontrol.dat的规则是什么?左起第四个组件?右三?第一个没有= 字符的?第一个有拼写错误的单词?
  • 格式总是这样?我的意思是 path/*.dat/d=something?
  • 不管怎样,看看os.path.split()os.path.dirname(),你可以循环调用它,直到你得到你想要的。如果您遇到困难,请发布您能够写的内容并解释您遇到的问题。

标签: python string python-2.7 path


【解决方案1】:
import re

url = '/path/eds/vs/accescontrol.dat/d=12520/file1.dat'
match = re.search('^(.+/([^/]+\.dat))[^$]', url)

print match.group(1)
# Outputs /path/eds/vs/accescontrol.dat
print match.group(2)
# Outputs accescontrol.dat

我编辑了这个以在 python2 中工作并回答这两个问题(上面早期的正则表达式答案只回答了两个问题中的第一个)

【讨论】:

  • 您意识到这与 user590028 的答案几乎完全相同?
  • 这可能对路径做出太多假设,但您可以通过以下方式获得两者:match = re.search('^(.+/([^/]+\.dat))[ ^$]', url) Q1 是 match.group(1) Q2 是 match.group(2)
  • 不,完全不同。他回答了Q1,我回答了Q2。但我上面的评论回答了这两个问题。
【解决方案2】:

你可以使用正则表达式

import re
ma = re.search('/([^/]+\.dat)/d=', path)
print ma.group(1)

【讨论】:

  • 这只是回答第一个问题。见下面我的(最初只回答了第二个,直到我编辑它)
【解决方案3】:

一个简单的解决方案是使用.split():

第一季度:

str = '/path/eds/vs/accescontrol.dat/d=12520/file1.dat'
[x for x in str.split('/') if x[-4:] == '.dat']

给予:

['accescontrol.dat','file1.dat']

类似的技巧将回答 Q2。

对于更高级的文件路径操作,我建议阅读os.path
https://docs.python.org/2/library/os.path.html#module-os.path

【讨论】:

    【解决方案4】:

    我建议将每个级别的文件夹/文件分成列表中的字符串。

    path = '/path/eds/vs/accescontrol.dat/d=12520/file1.dat'.split("/")
    

    这使得path = ['path', 'eds', 'vs', 'accescontrol.dat', 'd=12520', 'file1.dat']

    然后,您可以从那里访问每个不同的部分。

    【讨论】:

      【解决方案5】:

      为什么不这样

      from pathlib import Path
      h=r'C:\Users\dj\Pictures\Saved Pictures'
      path = Path(h)
      print(path.parts)
      

      Path: .
      ('C:\\', 'Users', 'dj', 'Pictures', 'Saved Pictures')
      

      【讨论】:

        猜你喜欢
        • 2020-05-08
        • 1970-01-01
        • 2011-12-15
        • 2014-05-24
        • 1970-01-01
        • 2021-08-07
        • 2011-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多