关于鱼c的《零基础学python》第二版中的一个疑问
大家好.我是买了鱼c的《零基础学python》自学python中的就文件操作的章节中有一个疑问.不知道是python版本更新问题,还是因为书的内容问题.
先上代码吧>>>f=open(r"C:\Users/goodb\Destop\record.txt")
>>>f.write("这是一段待写入的数据")
以上代码显示错误信息
>>>f=open(r"C:\Users/goodb\Destop\record.txt","w")
>>>f.write("这是一段待写入的数据")
是在python的官方IDLE环境进行的.内容章节8.1.5
主要是疑问,集中在.这个open(r"C:\Users/goodb\Destop\record.txt")。 这个r里面.不清楚是什么用的.而且在idle中,按鱼c的代码,也无法运行.已经检查过,不是地址的问题.
最后我是删除了鱼c代码里的r
正常了
你的Python版本? 前面加上‘r’, 是为了告诉编译器这个字符串不要转意 '\'
这么说你可能还不理解,直接上IDLE代码运行实例
>>> print('\t\n\n\t123')
123
>>> print(r'\t\n\n\t123')
\t\n\n\t123
这样能不能看懂?
不加r,字符串\t会转意为tab分隔符,\n转意为换行符
加r,则不转意,还保留反斜杠
open(路径,方式),路径中可能会存在多个反斜杠,因此最好是前面加r,方式如果为空,默认为只读模式(其他方式自行百度吧)
你代码中错误,是因为方式为空,即默认为只读模式
只读模式write方法写入数据还能不报错吗? 本帖最后由 suzuki_lm 于 2021-3-1 01:28 编辑
>>>print("C:\Users")
#会出错
>>>print("C:\\Users")
#正常运行
>>>print(r"C:\Users")
#正常运行
这三个代码都试一试就知道是怎么回事了。
为什么用r方便?
例子:
>>>print(“C:\Users\Destop\a\b\c\d")
#会出错
>>>print(“C:\\Users\\Destop\\a\\b\\c\\d")
#正常运行(每个\前都需要多输入一次\)
>>>print(r“C:\Users\Destop\a\b\c\d")
#正常运行(只需在前面输入一次r,自动完成后面加的\步骤)
为什么只用一次\会error?
为了区分\n 与 \t 等编码 报错内容是什么 首先`open`函数的定义如下
```python
def open(file, mode='r', ...):
return file-object
```
可以看到
第一个参数: 文件路径, 必填值
第二个参数: 打开模式, 可以不填写, 默认为`r`, 注意`r`模式下, 不能使用write, 只能`w`/`a`模式才能使用write方法 笨鸟学飞 发表于 2021-3-1 00:36
前面加上‘r’, 是为了告诉编译器这个字符串不要转意 '\'
这么说你可能还不理解,直接上IDLE代码运行实例 ...
明白了.谢谢原来是通配字符的一个使用.谢谢了.我还说为什么不用\\呢.因为之前有看过鱼c的c语言教程,一直强调用\\
不然会出现错误.
解释型语言,还说很不错.至少不会搞得不知道哪里的代码出问题了
我用的版本是3.9
确认了和版本无关,主要是他这个有文件,用了路径.我是没有用路径,直接目录创建的
页:
[1]