Python不会在已安装的驱动器上创建文件

Posted

技术标签:

【中文标题】Python不会在已安装的驱动器上创建文件【英文标题】:Python does not create file on mounted drive 【发布时间】:2020-04-12 02:17:41 【问题描述】:

我写了一个类似的python代码:

#!/usr/bin/python
import os
import sys
f=open("/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt","w+")

我尝试在已安装的驱动器上创建文件(在 AIX 上)

  node       mounted        
-------- ---------------  ---------------  ------ ------------ ---------------
clsfs038 /Bank_statements /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements 

...我得到了错误:

OSError: [Errno 22] Invalid argument: '/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt'

本地路径的相同代码工作正常!

我通过 bash 在挂载的驱动器上创建文件没有任何问题。

这是df:

[inform@xxx/inform ] $ df
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd10opt     1966080    380432   81%    15329    24% /opt
/dev/livedump      65536     64864    2%        4     1% /var/adm/ras/livedump
/dev/informlv 1257766912 662083576   48%   425081     1% /inform
clsfs038:/Bank_statements  2576863224 393165352   85%        0     0% /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements

文件夹权限:

[inform@xxx /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements ] $ ls -la
total 184
drwxrwxr-x    1 inform   inform        16384 Dec 19 16:44 .
drwxr-xr-x   19 inform   inform        32768 Dec 18 17:16 ..
drwxrwxr-x    1 inform   inform        16384 Dec 19 14:08 load
drwxrwxr-x    1 inform   inform        16384 Dec 19 10:37 statement
-rwxrwxr-x    1 inform   inform            0 Nov 22 12:26 testfile
-rwxrwxr-x    1 inform   inform            0 Dec 18 13:06 testfile2

坐骑:

[inform@xxx /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements ] $ mount
  node       mounted        mounted over    vfs       date        options
-------- ---------------  ---------------  ------ ------------ ---------------
         /dev/hd4         /                jfs2   Aug 26 17:39 rw,log=/dev/hd8
         /dev/hd2         /usr             jfs2   Aug 26 17:39 rw,log=/dev/hd8
         /dev/hd9var      /var             jfs2   Aug 26 17:39 rw,log=/dev/hd8
         /dev/hd3         /tmp             jfs2   Aug 26 17:40 rw,log=/dev/hd8
         /dev/hd1         /home            jfs2   Aug 26 17:40 rw,log=/dev/hd8
         /dev/hd11admin   /admin           jfs2   Aug 26 17:40 rw,log=/dev/hd8
         /proc            /proc            procfs Aug 26 17:40 rw
         /dev/hd10opt     /opt             jfs2   Aug 26 17:40 rw,log=/dev/hd8
         /dev/livedump    /var/adm/ras/livedump jfs2   Aug 26 17:40 rw,log=/dev/hd8
         /dev/informlv    /inform          jfs2   Aug 26 17:40 rw,log=INLINE
         /dev/zabbixapplv /opt/zabbixapp   jfs2   Aug 26 17:40 rw,log=INLINE
clsfs042 /sap_employee    /inform/app/Informatica/10.1.0/server/infa_shared/SrcFiles/SAP cifs   Aug 26 17:40 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,noprompt
clsfs042 /Applications    /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/Popcorn/Informatica cifs   Aug 26 17:40 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,noprompt
clsfs041 /AFS             /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/afs cifs   Aug 26 17:40 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,noprompt
clsfs038 /DetOtchet       /inform/app/Informatica/10.1.0/server/infa_shared/SrcFiles/CB_PORTF cifs   Aug 26 17:40 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,noprompt
clsfs038 /BALANS          /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/BALANS cifs   Aug 26 17:40 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,noprompt
clsfs040 /Workgroups      /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/Metodologiya cifs   Aug 26 17:40 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,noprompt
clsfs038 /Workgroups3     /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/ALM_REPORT cifs   Aug 26 17:40 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,noprompt
clsfs042 /Applications    /inform/app/Informatica/10.1.0/server/infa_shared/SrcFiles/rccf_applications cifs   Nov 12 12:20 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF
clsfs038 /Bank_statements /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements cifs   Nov 22 12:27 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF

命令结果(*** 询问了我更多细节,没有此文本我无法使用此代码编辑我的帖子):

[inform@xxx /inform/app/Informatica/10.1.0/server/infa_shared/Scripts/STATEMENT ] $ /inform/app/Informatica/10.1.0/server/infa_shared/Scripts/STATEMENT/test/stack.py
 False
 READ False
 WRITE False
/inform True
/inform READ True
/inform WRITE True
/inform/app True
/inform/app READ True
/inform/app WRITE True
/inform/app/Informatica True
/inform/app/Informatica READ True
/inform/app/Informatica WRITE True
/inform/app/Informatica/10.1.0 True
/inform/app/Informatica/10.1.0 READ True
/inform/app/Informatica/10.1.0 WRITE True
/inform/app/Informatica/10.1.0/server True
/inform/app/Informatica/10.1.0/server READ True
/inform/app/Informatica/10.1.0/server WRITE True
/inform/app/Informatica/10.1.0/server/infa_shared True
/inform/app/Informatica/10.1.0/server/infa_shared READ True
/inform/app/Informatica/10.1.0/server/infa_shared WRITE True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles READ True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles WRITE True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements READ True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements WRITE True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement READ True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement WRITE True
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt False
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt READ False
/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt WRITE False

请帮帮我)

问候, 亚历克斯

【问题讨论】:

如果你拼错了一个目录,它会失败 那个errno似乎暗示路径不存在。您能否验证您是否可以从命令行使用该路径访问该文件?如果可以,也可能是权限问题。还:看起来挂载的驱动器是 /Bank_statements,但我在您的路径中没有看到它? 考虑在命令行中对复制粘贴的文件夹名进行ls操作 与挂载输出相关的更多信息:我不确定我在查看那里的挂载输出。 /Bank_statements 是您的本地挂载点,下一列是远程文件夹吗?如果是这样,您的路径应该是:/Bank_statements/guru99.txt strace(1) 可以帮助:运行strace -f /usr/bin/python yourscipt.py 2>debug.log 然后检查文件debug.log 【参考方案1】:

您可以粘贴以下脚本的结果吗?以防万一它有助于找出任何东西

#!/usr/bin/python
import os

file_name = "/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt"

dirs = file_name.split("/")

for i in range(len(dirs)):
    dir_to_check = "/".join(dirs[:i+1])
    print(dir_to_check + " " + str(os.path.exists(dir_to_check)))
    print(dir_to_check + " READ " + str(os.access(dir_to_check, os.R_OK)))
    print(dir_to_check + " WRITE " + str(os.access(dir_to_check, os.W_OK)))    

【讨论】:

粘贴在主帖上。 该输出没有显示任何层次结构或权限问题。如果您使用相对路径(即仅文件名)而不是完整路径并从目录 /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/ 运行脚本怎么样

以上是关于Python不会在已安装的驱动器上创建文件的主要内容,如果未能解决你的问题,请参考以下文章

如果我断开连接,Google Colab 会继续运行单元以将文件保存在已安装的驱动器中吗?

在已跟踪大量文件的现有存储库上应用gitignore

在已创建的资源上部署 lambda 函数

虚拟机上安装linux 分区时硬盘数据会不会丢失

python在已有的表格写入,结果运行报错?

在弹性 beantalk 部署上的 ec2 微型实例上创建交换文件/驱动器