python中,如果自己写的模块与系统模块重名,该怎么调用系统的模块?

python中,如果自己写的模块与系统模块重名,该怎么调用系统的模块?,第1张

syspath是一个list,存放了当前所有import搜索的路径

绝大多数情况下,首个元素是"",即空串,也就是说,当你import re的时候,首先搜索的是"re",这时候就会直接在当前目录搜索到re。如下图:

解决方法也有不止一个:

1,在当前目录创建一个子文件夹,例如mine,在mine里放一个__init__py,不用有代码,空文件即可。使用的时候:import minere

2,在syspath上做手脚,把第一个空串挪到最后面去:

import sys

syspath = syspath[1:]

syspathappend("")

这样当前目录会跑到最后面去,从而达到最后搜索的目的。

不过这很可能有副作用,即你创建的模块,不能和前面搜索路径里的任何文件重名,否则会无法import你的模块。

这也是为什么默认把当前路径放在最前搜索的原因,因为是用户自己写的,显然优先级最高。

尽管就你的问题作出分析和提出一些可能的解决办法,但是严重不建议在实际工程起和系统模块重名的文件名,这是自找麻烦。

当然,研究探讨它的实现原理,始终是值得肯定的。

最后强调一下,当你在当前文件夹创建了一个syspy时,方法2不好用!

import shutil
import os
path1 = r''
path2 = r''
path1_ls = oslistdir(path1)
path2_ls = []
for i in range(len(path1_ls)):
    path1_ls[i] = ospathjoin(path1, path1_ls[i])
    path2_laappend(ospathjoin(path2,paht1_ls[i]replace("_out","")))
for i in range(len(path1_ls)):
    shutilcopy(path1_ls[i],paht2_ls[i])

大致就这样,你把对应的路径赋值给path1,path2,就可以了

osrename(a,b)是把a重命名为b(名字带路径)
oslistdir(path)以列表形式获取路径下文件(包括文件夹),oslistdir(“”)是当前文件夹
然后。。。想怎么重命名就怎么写程序。。。遍历,(检查,)修改。。。
如果待重命名的文件和py程序在一个文件夹会很方便,重命名不需要路径,像osrename(“1txt”,“2txt”)
如果重命名的规则没法表述,那只能自己一个个改了。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13409836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存