2

現在実行中のコードは次のとおりです。

for y in checkdirlist:
    if (y in no_exec or y.endswith(".ebuild")) and \
        stat.S_IMODE(os.stat(os.path.join(checkdir, y)).st_mode) & 0o111:

シンボリックリンクファイルで stat が失敗します。

y がシンボリックリンクかどうかのチェックを追加したいと思います。

lstatシステムエラーで問題を解決しますが、一般的には終わっていません

Traceback (most recent call last):
  File "/usr/bin/repoman", line 1385, in <module>
    myaux = dict(zip(allvars, portdb.aux_get(cpv, allvars)))
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 435, in aux_get
    myebuild, mylocation = self.findname2(mycpv, mytree)
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 308, in findname2
    raise InvalidPackageName(mycpv)
portage.exception.InvalidPackageName: dev-haskell/.#hakyll-9999

これらのファイルをフィルタリングしたいので、どれがシンボリックリンクであるかを知る必要があります。

4

1 に答える 1

4

ドキュメントから、おそらくos.path.islinkが必要です:

os.path.islink(パス)

Return True if path refers to a directory entry that is a symbolic link. 
Always False if symbolic links are not supported.
于 2012-10-15T14:04:46.370 に答える