「已注销」 2022-05-25 19:17 采纳率: 100%
浏览 34
已结题

python相对路径问题

问题遇到的现象:
在做一个简单但是对我来说不简单的程序,在调用文件是一开始是用的绝对路径,现在打算改成相对路径,可是遇到了问题,具体代码如下:

class ID():

    def set(IDname,cold,phone=None):
        #try:
        score = str(5)
        score_write=int(int(score)+5)
        f = open(f'ID\\{IDname}.txt',"w")#相对路径打开文件
        f.write(str(IDname)+'\n')#开始写入
        f.write(str(cold)+'\n')
        f.write(str(score_write)+'\n')
        if phone:
            phone_write = int(int(phone)+78915666942)
            f.write(str(phone_write)+'\n')
        f.close()#关闭文件
        #except:
            #pass

    def use(IDname,cold):
        IDname = str(IDname)
        cold = str(cold)
        try:
            f = open(f'ID\\{IDname}.txt',"r")#同上
        except FileNotFoundError:
            print('你看见你的账号了吗?我没看见。')
        else:
            IDname_read = str(f.readline().strip())
            cold_read = str(f.readline().strip())
            score_read = str(f.readline().strip())
            score_true=int(int(score_read)-5)
            f.close()
            if str(IDname) == str(IDname_read) and str(cold) == str(cold_read):#判断用户输入的内容是否与读取内容相同
                print('你好,'+str(IDname_read)+'!')
                print('您的当前分数是:'+str(score_true))
            else:
                print('您输入的用户名/密码不正确!')

以上代码是其中的两个函数,我的程序所有的函数的路径都是这样的:f = open(f'ID\{IDname}.txt',"w")#相对路径打开文件

以下是我的文件夹路径关系:E:\CONTINUE\科技\程序\py\可食用\Dai_ID\ID\x_x_x.txt(由于经常到处跑所以放在了U盘里,别见外哈,我想用相对路径也是为了解决各个盘路径不一的问题)

如果对我的问题还有不清楚,请留言
对帮组我的人们提出感谢!

  • 写回答

1条回答 默认 最新

  • fizzyfly 2022-05-25 19:34
    关注

    如果直接使用f = open(f'ID{IDname}.txt',"w")的话,程序会在你当前工作目录查找ID文件夹,除非你把ID文件夹和程序放在同一个目录下,不然会报错。
    正常操作应该是根据当前工作目录来拼接你要的文件路径

    import os
    cwd = os.getcwd()  #当前工作目录,假如是“E:\CONTINUE\科技\程序\py”
    id_path = os.path.join(cwd, r"可食用\Dai_ID", f"ID\\{IDname}.txt")  #根据上面的当前工作目录,一步一步拼接出文件路径
    f = open(id_path,"r")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月3日
  • 已采纳回答 5月26日
  • 创建了问题 5月25日

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch