我想确定文件是否位于本地硬盘驱动器或OSX中从网络安装的驱动器上.所以我想要生成类似下面的代码:
file_name = '/Somewhere/foo.bar'
if is_local_file(file_name):
do_local_thing()
else:
do_remote_thing()
Run Code Online (Sandbox Code Playgroud)
我找不到像is_local_file()上面例子那样有效的东西.理想情况下,我想使用现有的功能,如果有一个功能,但是我怎么能自己实现呢?我提出的最好的是以下,但这对待已安装的dmgs就好像它们是远程的,这不是我想要的.另外我怀疑我可能正在重新发明轮子!
def is_local_file(path):
path = path.split('/')[1:]
for index in range(1,len(path)+1):
if os.path.ismount('/' + '/'.join(path[:index])):
return False
return True
Run Code Online (Sandbox Code Playgroud)
我有两个生成校验和的函数,其中一个使用多进程,这会产生开销,但如果网络连接速度慢,则对于大文件更快.
我有一个 xml 文件中尚不存在的节点的 xpath,并且希望使用它来生成有问题的节点。我已经开始研究一个函数来做到这一点,但想知道是否有一个现有的库可以做到这一点并节省我一些时间?我目前正在使用 pyxml,但正在考虑将其移植到 ElementTree。所以为了澄清我想要:
root/foo/bar
Run Code Online (Sandbox Code Playgroud)
生产:
<root>
<foo>
<bar>
</bar>
</foo>
</root>
Run Code Online (Sandbox Code Playgroud)
我怀疑这样一个函数的行为对于一般情况没有足够好的定义,任何人都不会打扰,但我认为我会把它扔在那里以防万一。我还有该文件的 DTD(如果有帮助的话)。
我想知道是否有任何好的理由在python if语句中更喜欢列表而不是元组,反之亦然.因此,以下功能相同,但在性能和编码风格方面优于另一个,还是无关紧要?
if x in (1,2,3):
foo()
if x in [1,2,3]:
foo()
Run Code Online (Sandbox Code Playgroud)
我似乎已经养成了使用元组的习惯,如果有2或3个值和列表的任何更长的时间,我认为因为根据我的经验,元组往往很短并列出很长,但这似乎有点武断,可能不必要地不一致.
我会对人们可以给出的任何一个比另一个更好的例子感兴趣.
干杯
我知道符号已被添加到ES2015但没有读到太多关于它们的内容.我现在做了一些阅读,他们的目的显然不是我想的.似乎预期的目的是提供一种创建私有属性的方法.我的理解是,这是类似于一些函数式语言的原子,它被备份的东西在这里.我觉得奇怪的是它完全没有提到我错误地认为是他们的主要原因,这是为了为模式匹配提供一个更有意义的替代字符串:
export const FOO = 'This value is irrelevant as long as its unique';
// or
export const FOO = Symbol('A sensible description of what foo represents');
switch(blah):
case FOO: do_something();
...
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,使用Symbol似乎有许多优点,因为它可以防止意外碰撞(即使两个常量等于相同的字符串),消除了每次提出一个唯一字符串的负担,并提供了清晰的指示任何阅读有关其预期目的的代码的人.最后的考虑在某种程度上依赖于其他人同意我对符号应该用于什么的解释.
无论如何,问题是,这是符号的一个很好的用例,如果不是为什么不呢?