“shutil和listdir是否会在python中引起冲突?”

2024-05-29 03:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是错误(以代码格式):

 File "/cvmfs/cms.cern.ch/slc6_amd64_gcc530/external/python/2.7.11-oenich2/lib/python2.7/shutil.py", line 119, in copy
copyfile(src, dst)
 File "/cvmfs/cms.cern.ch/slc6_amd64_gcc530/external/python/2.7.11-oenich2/lib/python2.7/shutil.py", line 83, in copyfile
with open(dst, 'wb') as fdst:
IOError: [Errno 2] No such file or directory: ' ./submit_z_/eraB'

请注意,“/submit\u z\u/eraB”目录已经存在,也就是说,在其中复制显然有问题。你知道吗

我有一个不同的代码,做几乎相同的工作,但没有'listdir',它的工作很好。你知道吗

下面是产生上述错误的代码:

#!/usr/bin/env python
import sys
import getpass
user = getpass.getuser()

prefix   = "data"
Appendix = "latest"
OutPath  = "/%s/" % (sys.argv[2])

import os
from os import listdir


jsons = {"All":"/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions16/13TeV/ReReco/Final/Cert_271036-284044_13TeV_23Sep2016ReReco_Collisions16_JSON.txt"}
dir="/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions16/13TeV/Era/ReReco/"
for f in listdir(dir):
    era = f.split("_")[-1].split(".")[0]
    jsons[era] = dir+f

workingdir = sys.argv[1]
while os.path.isdir( "./%s" % (workingdir) ):
workingdir += "_"
os.mkdir( workingdir )

from subprocess import call
call(["voms-proxy-init" , "--out" , "/tmp/.x509up_u%d" % (os.getuid()) , "--voms" , "cms" , "--valid" , "1000:0"])

file_sh = open ("%s/Submit.sh" % (workingdir), "w")
import shutil
from shutil import copyfile

for era in jsons:
    if not era.count("eraB"):
       continue

    print ("cp produceDataPU.sh" + " ./%s/%s" % (workingdir,era))
    shutil.copyfile( "produceDataPU.sh" , " ./%s/%s" % (workingdir,era) )

    file = open ("%s/%s/Submit.cmd" % (workingdir, era), "w")
    print >> file, "executable              = %s/%s/%s/ProduceDataPU.sh" % (os.getcwd() , workingdir , era)
    print >> file, "output                  = $(ClusterId)_$(ProcId).out"
    print >> file, "error                   = $(ClusterId)_$(ProcId).err"
    print >> file, "log                     = $(ClusterId)_$(ProcId).log"
    print >> file, '+JobFlavour             = "tomorrow"'
    print >> file, "environment             = CONDORJOBID=$(ProcId)"
    print >> file, "notification            = Error"
    print >> file, ""
    print >> file, "arguments               = %(JSON)s %(Appendix)s " % {
    "JSON":"%s/JSON.text" % (workingdir) ,
    "Appendix":Appendix
    print >> file, "queue %d" % (len(era))

    print >> file, ""

    file.close()

    print >> file_sh, "cd %s" % (era)
    print >> file_sh, "condor_submit -batch-name %s Submit.cmd" % (era)
    print >> file_sh, "cd .."


print "to submit the jobs, you have to run the following commands :"
print "cd %s" % (workingdir)
print "source Submit.sh"
file_sh.close()

Tags: inimportcmsosshchfilecern
1条回答
网友
1楼 · 发布于 2024-05-29 03:32:24

您传递的目标文件名中有一个前导空格

shutil.copyfile( "produceDataPU.sh" , " ./%s/%s" % (workingdir,era) )

这可能会混淆shutil.copyfile(在一个快速的本地测试中,给出您看到的错误)。你知道吗

你能试一下吗

shutil.copyfile( "produceDataPU.sh" , "./%s/%s" % (workingdir,era) )

什么?你知道吗

相关问题 更多 >

    热门问题