由python创建的批处理文件未运行,但由记事本编辑有效

由python创建的批处理文件未运行,但由记事本编辑有效,python,python-3.x,editor,slurm,Python,Python 3.x,Editor,Slurm,我打算使用python并创建一组批处理文件,但是python创建的批处理文件不能上传,而手动输入的代码可以上传。我想知道为什么 我的代码如下 import os os.chdir("c:/Users/alku/Documents/Work/ToDo/data") ## creating a folder to place submit codes if not os.path.exists('submit'): os.makedirs('submit') depv

我打算使用python并创建一组批处理文件,但是python创建的批处理文件不能上传,而手动输入的代码可以上传。我想知道为什么

我的代码如下

import os

os.chdir("c:/Users/alku/Documents/Work/ToDo/data")
## creating a folder to place submit codes
if not os.path.exists('submit'):
    os.makedirs('submit')

depvar = ["01", "02", "03", "04", "05", "06", "07", "08", 
          "09", "10", "11", "12", "13", "14", "15", "16", 
          "17", "18", "19", "20", "21", "22", "23", "24"]
##creating corresponding batch codes for supercomputer
###creating a master file
fmaster= open('submit/submit-R-00.csh',"wb+")
fmaster.write(bytes(
'#!/bin/csh' + "\n" +
'#SBATCH --time=00:10:00' + "\n" +
'#SBATCH --mem=6000' + "\n" +
'#SBATCH --cores=1' + "\n"
, encoding='utf8'))
fmaster.close()

for i in depvar:
    fmaster= open('submit/submit-R-00.csh',"ab+")
    f= open('submit/submit-R-' + str(i) + '.csh',"wb+")
    f.write(bytes(
    '#!/bin/csh' + "\n" +
    '#SBATCH --time=96:00:00' + "\n" +
    '#SBATCH --mem=256000' + "\n" +
    '#SBATCH --cores=8' + "\n" +
    'module load R/3.5.1' + "\n" +
    'Rscript alku-COVIDImpact031-quantregForest-part'+ str(i) + '.R'
    , encoding='utf8'))
    ##writing into the master file
    fmaster.write(bytes(
    'sbatch submit-R-' + str(i) + '.csh'  + "\n"
    , encoding='utf8'))
结果是

#!/bin/csh
#SBATCH --time=96:00:00
#SBATCH --mem=256000
#SBATCH --cores=8
module load R/3.5.1
Rscript alku-COVIDImpact031-quantregForest-part01.R
使用主文件submit-R-00.csh提交它们

#!/bin/csh
#SBATCH --time=00:10:00
#SBATCH --mem=6000
#SBATCH --cores=1
sbatch submit-R-01.csh
sbatch submit-R-02.csh
sbatch submit-R-03.csh
sbatch submit-R-04.csh
sbatch submit-R-05.csh
sbatch submit-R-06.csh
sbatch submit-R-07.csh
sbatch submit-R-08.csh
sbatch submit-R-09.csh
sbatch submit-R-10.csh
sbatch submit-R-11.csh
sbatch submit-R-12.csh
sbatch submit-R-13.csh
sbatch submit-R-14.csh
sbatch submit-R-15.csh
sbatch submit-R-16.csh
sbatch submit-R-17.csh
sbatch submit-R-18.csh
sbatch submit-R-19.csh
sbatch submit-R-20.csh
sbatch submit-R-21.csh
sbatch submit-R-22.csh
sbatch submit-R-23.csh
sbatch submit-R-24.csh
然而,当我将这些文件上传到我们大学的超级计算机时,超级计算机几乎立即取消了这些作业。此外,系统会创建一个全空的输出,因此我无法确定会发生什么


然后我用记事本输入了完全相同的代码,并将它们上传到超级计算机上。不知怎么的,这次它成功了。这两个版本完全相同,我还使用vim检查线路断路器。虽然问题已经解决,但我很好奇为什么python创建的相同代码不能提交,而手动键入的代码可以提交。

在For循环中,写入完成后,必须关闭文件

fmaster.close()
f.close()
请尝试关闭该文件,然后重试 避免丢失
f.close()
的最佳方法是将
一起使用,如:

with open("filename") as f:
    for line in f:
        # ... do stuff ...

这将自动关闭该文件。我们不需要在For循环中明确地执行
f.close()

,写入完成后,您必须关闭文件

fmaster.close()
f.close()
请尝试关闭该文件,然后重试 避免丢失
f.close()
的最佳方法是将
一起使用,如:

with open("filename") as f:
    for line in f:
        # ... do stuff ...

这将自动关闭该文件。我们不需要明确地执行
f.close()
使用
with
对文件执行操作。例如

with open("filename") as f:
    for line in f:
        # ... do stuff ...

要避免显式关闭文件

请使用
with
对文件执行操作。例如

with open("filename") as f:
    for line in f:
        # ... do stuff ...

为避免显式关闭文件

您好,谢谢您的回复!它起作用了!当我没有关闭()文件时会发生什么?代码看起来是一样的。对不起我的愚蠢的问题,我是新的编码…嗨,谢谢你的回答!它起作用了!当我没有关闭()文件时会发生什么?代码看起来是一样的。对不起我的愚蠢的问题,我是新的编码。。。