我正在使用Jython,通过Topspin(运行在Java上的NMR软件)运行以下代码:

home = "C:/Bruker/TopSpin3.2"
ep_zges_outdir = os.path.abspath(home + "/data/Testshutil/nmr/zges/")
data = ["EP_Saliva_140131_raw", "1", "1", "C:/Bruker/TopSpin3.2/data/Testshutil/nmr"]
ep_zges_list = [["EP_Saliva_140131_raw",25,334],...]

for sample in ep_zges_list:
    if data[0] == sample[0] and data[1] == str(sample[1]):
        src = os.path.abspath(data[3] + "/" + data[0] + "/" + data[1])
        dst = os.path.abspath(ep_zges_outdir + "/" + str(sample[2]))
        shutil.copytree(src, dst)

正确的导入已经完成,当它工作时,不需要os.path.abspath。
这在Windows/Linux python中运行得很好,并且通过与在CentOS中运行Jython相同的软件运行。它不在Windows 7中的软件/Jython中运行,并且会产生以下错误:
Traceback (most recent call last):
  File "C:/Bruker/TopSpin3.2/exp/stan/nmr/py/user/JF_test_code_8.py", line 41, in <module>
    shutil.copytree(os.path.abspath(data[3] + "/" + data[0] + "/" + data[1]), os.path.abspath(ep_zges_outdir + "/" + str(sample[2])))
  File "C:\Bruker\TopSpin3.2\jython\Lib\shutil.py", line 145, in copytree
    raise Error, errors
shutil.Error: [u'C:\\Bruker\\TopSpin3.2\\data\\Testshutil\\nmr\\EP_Saliva_140310_raw\\1\\pdata\\1',
u'C:\\Bruker\\TopSpin3.2\\data\\Testshutil\\nmr\\zges\\334\\pdata\\1',
"[Errno 5] Input/output error: u'C:\\\\Bruker\\\\TopSpin3.2\\\\data\\\\Testshutil\\\\nmr\\\\zges\\\\334\\\\pdata\\\\1'",
u'C:\\Bruker\\TopSpin3.2\\data\\Testshutil\\nmr\\EP_Saliva_140310_raw\\1\\pdata',
u'C:\\Bruker\\TopSpin3.2\\data\\Testshutil\\nmr\\zges\\334\\pdata',
"[Errno 5] Input/output error: u'C:\\\\Bruker\\\\TopSpin3.2\\\\data\\\\Testshutil\\\\nmr\\\\zges\\\\334\\\\pdata'",
u'C:\\Bruker\\TopSpin3.2\\data\\Testshutil\\nmr\\EP_Saliva_140310_raw\\1',
u'C:\\Bruker\\TopSpin3.2\\data\\Testshutil\\nmr\\zges\\334',
"[Errno 5] Input/output error: u'C:\\\\Bruker\\\\TopSpin3.2\\\\data\\\\Testshutil\\\\nmr\\\\zges\\\\334'"]

软件版本:
Windows 7 SP1 64位。
Python 2.7 32位。
Jython 2.5.3运行在Topspin3.2和Java1.7.0上。
CentOS 6.5 32位
Jython 2.5.3在Topspin 3.2和Java 1.7.0上运行45

最佳答案

我认为这是一个Jython错误(一个非常烦人的错误)。见
http://bugs.jython.org/issue1872

关于python - Jython Shutil(Windows,Linux,J/Python之间的不同行为)!,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22527400/

10-15 05:09