鱼C论坛

 找回密码
 立即注册
查看: 575|回复: 5

[已解决]rU是什么来的

[复制链接]
发表于 2018-12-15 23:06:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import requests
file = open("list.txt","rU")
num = 0
for line in file:
    num += 1
    if num == 200:
        break
    html = requests.get(line)
    print(num)

    file_name = "pic"+str(num)+".jpg"
    try:
        with open(file_name,"wb")as f:
            f.write(html.content)
    except:
        continue


file =open("list.txt","rU")中的rU是代表什么形式打开
最佳答案
2018-12-16 09:08:58
本帖最后由 heidern0612 于 2018-12-16 09:10 编辑

rU模式,即U通用换行模式(Universal new line mode),该模式会把所有的换行符(\r \n \r\n)替换为\n。

常用于python2时代,python2的时代强烈推荐。因为它会把回车符/r和换行符/n统一替换成/n输出。

给个例子对比r模式和rU模式
  1. content = file(fn, 'r').read()                                
  2. # test\r\ntest2                                # 这里的换行会因不同系统而不同

  3. content = file(fn, 'rU').read()                                # 所有的换行都被统一,不分系统
复制代码




然而Python3时代并不推荐用rU模式,因为没什么用。

因为在Python 3时代,已经可以通过open函数的newline参数来控制Universal new line mode:

读取时候,不指定newline,则默认开启Universal new line mode,所有\n, \r, or \r\n被默认转换为\n ;

写入时,不指定newline,则换行符为各系统默认的换行符(\n, \r, or \r\n, ),指定为newline='\n',则都替换为\n(相当于Universal new line mode);

不论读或者写时,newline=''都表示不转换。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-15 23:08:31 | 显示全部楼层
哪里看来的。没有这种写法
不同模式打开文件的完全列表:
模式
描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-15 23:13:06 | 显示全部楼层
ba21 发表于 2018-12-15 23:08
哪里看来的。没有这种写法
不同模式打开文件的完全列表:

在网上找到。但它是可以正常打开文件的哦,我不明白什么意思,所以来问问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-16 08:37:41 | 显示全部楼层
疑似是Unicode编码打开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-16 09:08:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 heidern0612 于 2018-12-16 09:10 编辑

rU模式,即U通用换行模式(Universal new line mode),该模式会把所有的换行符(\r \n \r\n)替换为\n。

常用于python2时代,python2的时代强烈推荐。因为它会把回车符/r和换行符/n统一替换成/n输出。

给个例子对比r模式和rU模式
  1. content = file(fn, 'r').read()                                
  2. # test\r\ntest2                                # 这里的换行会因不同系统而不同

  3. content = file(fn, 'rU').read()                                # 所有的换行都被统一,不分系统
复制代码




然而Python3时代并不推荐用rU模式,因为没什么用。

因为在Python 3时代,已经可以通过open函数的newline参数来控制Universal new line mode:

读取时候,不指定newline,则默认开启Universal new line mode,所有\n, \r, or \r\n被默认转换为\n ;

写入时,不指定newline,则换行符为各系统默认的换行符(\n, \r, or \r\n, ),指定为newline='\n',则都替换为\n(相当于Universal new line mode);

不论读或者写时,newline=''都表示不转换。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-16 09:09:30 | 显示全部楼层
网络卡了下,发重了,抱歉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 11:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表