鱼C论坛

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

[已解决]一个小问题困扰,文件的打开问题

[复制链接]
发表于 2017-9-28 21:16:51 | 显示全部楼层 |阅读模式

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

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

x
写35课作业时时遇到一个非常S,B的问题.类似如下
>>> def run():                      #b='C:\Users\Administrator\Desktop\练习\新建文件夹\成绩转换.py'
                with open(b) as f:
                for each_linces in f:
                        count_lince+=1
                return count_lince
这个b相当于是从别处获得的文件名和路径变量,但是反斜杠会带来转译问题SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 4-5: truncated \UXXXXXXXX escape, 现在只能想到写个函数挨个替换成正斜杠,还有其他办法吗我09年的笔记本跑这小程序要爆了看教学视频是不带路径打开文件的,我这不行.只能带路径打开,路径有奇葩字母就吃瘪. 打开单个文件还可以用原始字符串,变量带来的路径文件名不会搞.
最佳答案
2017-9-29 09:05:56
一般路径都是str类型,赋值的时候直接用r'xxx\xxx\xxxx'
如果需要将路径合并,可以通过str类的直接相加,但是os.path模块下的join函数更好
比如:
import os.path
sp = r'C:\test'
ap = r'goods\catalog.txt' 
dp = os.path.join(sp,dp)

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

使用道具 举报

发表于 2017-9-28 21:21:40 | 显示全部楼层
def run():                      #b='C:\Users\Administrator\Desktop\练习\新建文件夹\成绩转换.py'
                with open(b, encoding='gbk') as f:
                for each_linces in f:
                        count_lince+=1
                return count_lince
不行用下面的
def run():                      #b='C:\Users\Administrator\Desktop\练习\新建文件夹\成绩转换.py'
                with open(b, encoding='utf-8') as f:
                for each_linces in f:
                        count_lince+=1
                return count_lince

评分

参与人数 1荣誉 +5 收起 理由
雨后青草的味道 + 5

查看全部评分

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

使用道具 举报

发表于 2017-9-28 21:26:28 | 显示全部楼层
看你这错误冒似跟\没半毛钱关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-28 22:11:24 | 显示全部楼层

当我用原始字符串跳过的了之前的问题后,标明编码的打开方式确实解决了之后的一个报错. 十分感谢,但是还是没能解决之前的问题.
如下代码已经可以计算出文件中代码行数了:
>>> def run():
        count_lince=0
        b=r"C:\Users\Administrator\Desktop\练习\035课,提供文件夹浏览框.py"
        with open(b, encoding='utf-8') as f:
                for each_linces in f:
                        count_lince+=1
                return count_lince
>>> run()
9
>>>
b变量获取到的路径文件名来自其他变量或返回值如何处理呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-28 22:14:50 | 显示全部楼层
ba21 发表于 2017-9-28 21:26
看你这错误冒似跟\没半毛钱关系。

如下代码已经可以计算出文件中代码行数了:
>>> def run():
        count_lince=0
        b=r"C:\Users\Administrator\Desktop\练习\035课,提供文件夹浏览框.py"
        with open(b, encoding='utf-8') as f:
                for each_linces in f:
                        count_lince+=1
                return count_lince
>>> run()
9
>>>
b变量获取到的路径文件名来自其他变量或返回值如何处理呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 09:05:56 | 显示全部楼层    本楼为最佳答案   
一般路径都是str类型,赋值的时候直接用r'xxx\xxx\xxxx'
如果需要将路径合并,可以通过str类的直接相加,但是os.path模块下的join函数更好
比如:
import os.path
sp = r'C:\test'
ap = r'goods\catalog.txt' 
dp = os.path.join(sp,dp)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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