2013-02-28 42 views
0

我有以下通过java类调用的python脚本。它适用于本地文件名('D:\ temp \ Test.pdf'),但是当文件名是\ serverA \ f $ \ dir \ Test.pdf时,它总是返回false。它运行在Tomcat服务器上(具有管理员权限),serverA驱动器f安装在tomcat服务器机器上。 关于我可能错过的任何想法?使用在tomcat上运行的python脚本挂载的驱动器路径名

def checkFileExists(filename): 

     vFile = File(filename) 
     if (vFile == None): 
      return False 
     return vFile.exists() 
+0

如果该文件是一个网络驱动器上,这个问题是一个深一点比看起来。请参阅http://stackoverflow.com/questions/1271317/what-is-the-best-way-to-map-windows-drives-using-python。在将来还要注意标准的'os.path.exists'函数。 – 2013-02-28 13:19:34

+0

谢谢你,但我没有奢望在该系统上映射和取消映射驱动器。文件所在的驱动器不幸地映射到tomcat服务器上。那么,你说没有标准的解决方案呢? – user2119684 2013-02-28 13:27:08

+0

顺便说一下路径是'\ serverA \ ...'?或者它是'\\ serverA \ ...'? – 2013-02-28 13:36:59

回答

0

因此,正如在问题的评论中讨论的那样,在Python中访问Windows共享有点困难。因此,检查某个文件是否存在于远程位置并且不被Python理解,但被Windows的工具理解的方法会调用这些工具并解析它们的输出。

例如:

import subprocess 

def file_exists(path):   
    res = subprocess.check_output(['IF', 'EXIST', path, 'ECHO', "1"]) 
    return res.strip() == '1' 

用法:

path = r'\\serverA\f$\dir\Test.pdf' 
print(file_exists(path)) 
+0

谢谢你,这实际上适用于诱骗python和检查文件是否存在,但仍然存在,我没有得到文件本身.. 整个操作的重点是移动一些文件从远程位置传输到本地驱动器。 所以这里真正的问题是,在vFile = File(pathname)之后,vFile等于None并且vFile.exists()返回false .. 你知道为什么会发生这种情况吗?再次感谢 – user2119684 2013-02-28 14:31:00

+0

只需以类似的方式使用'xcopy'命令,例如'subprocess.call(['xcopy',source_path,dest_path])' – 2013-02-28 14:55:18

相关问题