我被建议利用Python 3.6中的pathlib模块,因为我正在Linux上设计一个脚本,该脚本将在Windows机器上用于生产。
pathlib
确实看起来很有希望,但是我的os
模块代码效果很好:
class Watcher:
DIRECTORY_TO_WATCH = os.path.join(os.path.expanduser("~"), 'Dropbox', 'credits_hd_jobs')
print(DIRECTORY_TO_WATCH)
def __init__(self):
self.observer = Observer()
def run(self):
event_handler = Handler()
self.observer.schedule(event_handler, self.DIRECTORY_TO_WATCH, recursive=False)
self.observer.start()
如果我改为pathlib等价物:
from pathlib import Path as p
class Watcher:
DIRECTORY_TO_WATCH = p.joinpath(p.home(), 'Dropbox', 'credits_hd_jobs/')
print(DIRECTORY_TO_WATCH)
def __init__(self):
self.observer = Observer()
def run(self):
event_handler = Handler()
self.observer.schedule(event_handler, self.DIRECTORY_TO_WATCH, recursive=False)
self.observer.start()
80%我会在Pycharm中收到此错误:
处理以退出代码133结束(由信号5中断:SIGTRAP)
或脚本将运行,但我的触发器根本不会触发。混乱。
答案 0 :(得分:0)
确定。我找到了解决方案:
os.path.join(os.path.expanduser("~"), 'Dropbox', 'credits_hd_jobs')
返回str
,而:
p.joinpath(p.home(), 'Dropbox', 'credits_hd_jobs/')
返回PosixPath
我最后使用str()
将后者作为字符串进行投射,尽管这看起来很难看。我保持这个问题的开放性以获得更好的答案。