【问题标题】:Get absolute file path of certain file type in CWD在 CWD 中获取特定文件类型的绝对文件路径
【发布时间】:2017-02-02 12:36:32
【问题描述】:

我使用 Windws 下的 python 程序 cclib 来处理一些 *.log 文件,这些文件位于 Z:\dir1 的子文件夹中,有时甚至是子子文件夹中。 我已通过 DOS 脚本将 .py 脚本复制到存在 *.log 文件的每个子文件夹中。

我想执行这个简单的 .py 脚本:

from cclib.io import ccopen
p = ccopen("*opt.NORMAL.log")
data = p.parse()
homo = data.homos[0] # assuming spin-restricted
lumo = homo + 1

homo_energy = data.moenergies[0][homo]
lumo_energy = data.moenergies[0][lumo]

print (homo_energy, lumo_energy)

但是,将 ccopen(与此相关的所有关闭 cclibs .py 脚本位于我的 C:\py35 文件夹中)定向到我执行此脚本的当前工作目录中的 *.log 文件不起作用(AttributeError:' NoneType' 对象没有属性 'parse')。 Ccopen 似乎需要我的 *.log 的绝对路径,如果我将它粘贴进去,至少它可以工作。 使用我的 DOS 脚本,我递归地通过 Z:\dir1 的每个子和子子,其中包含一个 *.log 文件,但名称不同。在每个目录中,我执行我的 py 脚本。如何告诉脚本中的 ccopen 模块处理当前工作目录中的 *.log 文件?

我猜这种问题已经被问了一千次了,但我就是找不到合适的解决方案。所以,抱歉重复,感谢您的帮助。

【问题讨论】:

    标签: python python-3.x path


    【解决方案1】:

    你可以换行

    ccopen("*opt.NORMAL.log")
    

    通过调用 glob.glob 来解析文件名,并检查以防万一没有或很多文件匹配通配符模式

    files = glob.glob("*opt.NORMAL.log")
    if len(files)==1:
       p = ccopen(files[0])
    else:
       raise Exception("Expected 1 log file, found {}".format(len(files)))
    

    【讨论】:

    • 谢谢!但我似乎得到了错误的身份或什么的。你能告诉我如何解决这个问题吗?
    • 我收到错误文件“homolumoscript.py”,第 29 行 ^ SyntaxError: unexpected EOF while parsing
    • 抱歉,缺少括号。固定。
    • 是的,我现在也意识到了这一点。非常感谢您的帮助!
    猜你喜欢
    • 2016-11-19
    • 2012-04-24
    • 2010-09-18
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多