Python 3.x 尽管拥有权限,但在QPython中关闭xlsxwriter工作簿时出现PermissionError
我确实有写入特定目录的权限,文件也会被创建。但是行Python 3.x 尽管拥有权限,但在QPython中关闭xlsxwriter工作簿时出现PermissionError,python-3.x,xlsxwriter,qpython,qpython3,Python 3.x,Xlsxwriter,Qpython,Qpython3,我确实有写入特定目录的权限,文件也会被创建。但是行w.close()会导致错误 因为我使用这个模块来创建文件,所以它不会在任何其他应用程序中打开 如果相关的话,其他模块如csv工作正常 /data/user/0/org.qpython.qpy/files/bin/qpython3-android5.sh && exit n/qpython3-android5.sh && exit < Python 3.6.6 (qpyc:3.6.6, Ju
w.close()
会导致错误
因为我使用这个模块来创建文件,所以它不会在任何其他应用程序中打开
如果相关的话,其他模块如csv
工作正常
/data/user/0/org.qpython.qpy/files/bin/qpython3-android5.sh && exit
n/qpython3-android5.sh && exit <
Python 3.6.6 (qpyc:3.6.6, Jul 26 2018, 03:54:22) [BUILD WITH QPY3-TOOLCHAIN (https://github.com/qpython-android) ] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.chdir('scripts3')
>>> os.getcwd()
'/storage/emulated/0/qpython/scripts3'
>>> import xlsxwriter
>>> w = xlsxwriter.Workbook('0.xlsx')
>>> w.close()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/data/user/0/org.qpython.qpy/files/lib/python3.6/site-packages/xlsxwriter/workbook.py", line 306, in close
self._store_workbook()
File "/data/user/0/org.qpython.qpy/files/lib/python3.6/site-packages/xlsxwriter/workbook.py", line 675, in _store_workbook
os.utime(os_filename, (timestamp, timestamp))
PermissionError: [Errno 1] Operation not permitted
>>>
这对qpython不起作用。所以我在内存中使用了构造函数的参数,这个参数起作用了
w = xlsxwriter.Workbook('0.xlsx', {'in_memory': True})
XlsxWriter使用tmp文件创建构成xlsx文件的XML文件,然后将其压缩到xlsx文件中
您看到的错误是由于Python在您的系统上使用的tmp目录缺少权限造成的。注意,此目录与创建输出文件的目录不同
通过在与应用程序相同的环境中运行以下命令,可以找到tmpdir位置:
import tempfile
print(tempfile.gettempdir())
您可以通过两种方式解决此问题:
更改Python和XlsxWriter使用的默认tmp目录的权限
使用tmpdir
更改XlsxWriter使用的tmp目录的位置
尽管我无法使用您建议的解决方案(指定tmpdir仍然会导致相同的错误,并且我没有修改应用程序权限)。然而,我将构造函数的参数设置为true,它就工作了。所以,我接受这个答案,因为它显示了正确的方向。顺便说一句,你在这个模块上做了非常出色的工作,同样令人印象深刻的是它的文档。我觉得每个人都应该记录代码。
import tempfile
print(tempfile.gettempdir())