相关疑难解决方法(0)

如果文件不存在,Python中的open()不会创建文件

打开文件作为读/写(如果存在)或不存在的最佳方法是什么,然后创建它并将其作为读/写打开?从我读到的,file = open('myfile.dat', 'rw')应该这样做,对吧?

它不适合我(Python 2.6.2),我想知道它是否是一个版本问题,或者不应该像那样或什么工作.

最重要的是,我只需要解决问题的方法.我很好奇其他的东西,但我需要的只是一个很好的方式来做开场部分.

更新:封闭目录可由用户和组写入,而不是其他(我在Linux系统上...所以权限775换句话说),确切的错误是:

IOError:没有这样的文件或目录.

python linux file-io file-permissions

607
推荐指数
13
解决办法
76万
查看次数

python open内置函数:模式a,a +,w,w +和r +之间的区别?

在内置的蟒蛇开放的功能,是个什么模式之间准确的区别w,a,w+,a+,和r+

特别是,文档暗示所有这些都允许写入文件,并说它打开文件"具体"附加",写入"和"更新",但没有定义这些术语的含义.

python

555
推荐指数
8
解决办法
36万
查看次数

在python中打开文件时,'r +'和'a +'之间有什么区别?

可能重复:
python open内置函数:模式a,a +,w,w +和r +之间的区别?

我试着r+a+打开文件和读取和写入,但"R +"和"A +"都是STR附加到文件末尾.

那么,r+和之间的区别是a+什么?


加:

我找到了原因:

我已经读取了文件对象,忘了寻找(0)将位置设置为开始

python

28
推荐指数
3
解决办法
7万
查看次数

os.mknod()在MacOS上失败了?

os.mknod()Mac上的特权电话吗?它总是失败,不允许操作?

In [1]: import os

In [2]: os.mknod("/tmp/test123")
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-2-1b8032a076af> in <module>()
----> 1 os.mknod("/tmp/test123")

OSError: [Errno 1] Operation not permitted
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
2
解决办法
2742
查看次数

如果文件不存在则创建,否则不执行任何操作

我有一个将运行多次的脚本,该脚本的主函数中的第一行是这样的:

def main():
    users_csv_file_init()
Run Code Online (Sandbox Code Playgroud)

这个函数应该做的是创建一个 CSV 文件并附加列的名称,如果这样的文件不存在,如果存在,它不应该执行任何操作。我写的是这样的:

def users_csv_file_init():
    with open("users.csv", 'a+') as output_file:
        writer = csv.writer(output_file)
        writer.writerow(["userid", "username", "fname", "lname", "uuid"])
Run Code Online (Sandbox Code Playgroud)

这会失败,因为每次我运行脚本时它都会创建一个新行(列的名称),并且这是有道理的,因为a+如果文件不存在则创建文件并以附加模式打开它。但我无法更改为w+任何一个,因为这会删除文件中以前的所有内容。从 , only的模式来看open(),如果文件不存在,则似乎创建该文件。w+a+

我可以手动检查文件是否存在,如下所示:

def users_csv_file_init():
    if not os.path.exists("users.csv"):
        with open("users.csv", 'w') as output_file:
            writer = csv.writer(output_file)
            writer.writerow(["userid", "username", "fname", "lname", "uuid"])
Run Code Online (Sandbox Code Playgroud)

我被告知这样做是不符合Python标准的,并且容易出现竞争条件。我怎样才能正确地做到这一点?

python

5
推荐指数
1
解决办法
3019
查看次数

标签 统计

python ×5

file-io ×1

file-permissions ×1

linux ×1