有没有一种与*.py扩展名完全相同的Python 3文件扩展名?

3
我正在使用Python编写一个开源项目,并为了让其他开发人员更容易地添加功能,我希望我的所有代码都有另一个文件扩展名,以便我的安装程序/更新程序可以区分我的文件和其他开发人员的文件(这些文件对他们的电脑是唯一的)。安装程序将删除我的所有程序文件,然后下载最新版本并将其放在目录中。为了使这些文件结合在一起,在我的主程序的末尾,我会添加几行代码来检查其他开发人员文件中的任何条件是否发生(我正在使用中文房间思想实验制作数字助手,所以主程序基本上是数百个ifelifelse语句,指向模块告诉主程序该做什么)。

1
我有一个主程序,基本上是 if UserInput=="hello": print("Hi") 和其他更高级的if语句,因为据我所知,这是最简单的方法。而且我还没有使用过git,因为我几乎没有使用它的经验,并且我已经有了一个安装文件,并将其发布在我的网站上(alaricwhitehead.wix.com/artist),所以改变不会很有效率。 - undefined
2
听起来你正在构建一个字典,其中一个单词/键,例如“hello”映射到另一个单词,即“Hi”。为什么不使用Python字典和单个if呢?如果您的程序只需要是一个大型JSON文件或数据库以及5行Python代码,那就可以了。 - undefined
中国屋思想实验(https://en.m.wikipedia.org/wiki/Chinese_room)基本上是一个字典,这就是我决定采用的模型。然而,字典可能不太适合我想要的,因为:A:我以前从未使用过字典,所以不知道它们如何工作;B:我已经写了数百行代码;C:程序不仅仅是回答陈述/问题,还执行一些操作,比如在计算机上搜索文件和播放音乐文件/创建播放列表。此外,Python是我使用最多的编程语言,所以我宁愿继续使用它。 - undefined
抱歉如果给你一种恼怒的印象,我觉得我误解了你上一篇帖子,所以决定为你澄清一下。我说我宁愿坚持使用Python是因为我以为.json文件是特定于另一种语言的,所以尽管我对学习字典很感兴趣,但我宁愿不改变我的程序,因为它已经运行良好,所以我认为没有太多好处可以从中获得。然而对我来说,添加另一个文件扩展名可能不是一个好主意,因为这是开源的,所以可能不是我想要做的最有效的方式。 - undefined
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/107464/discussion-between-jdo-and-sonrad10。 - undefined
显示剩余3条评论
2个回答

3

是否有一种python 3文件扩展名能像*.py扩展名一样工作?

没有,至少我不知道。如果你想通过创建自己的文件扩展名来进行"版本控制"(?!),可以使用imp模块,例如:

Python 3.4.3解释器输出:

>>> import imp
>>> my_module = imp.load_source("My custom module", "my_module.some_extension")
>>> my_module
<module 'My custom module' from 'my_module.some_extension'>
>>> dir(my_module)
['__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'func']
>>> my_module.func()
my module says hi!
>>> 

my_module.some_extension:

def func():
    print("my module says hi!")

-2

如果Python解释器不允许你导入它们,那就没有什么好处了。.py3扩展名只是表示“这是一个Python 3的脚本”,所以使用它可能会产生误导,并且没有特别的好处。 - undefined
1
带有.py3扩展名的文件无法正常导入。 - undefined
“通常导入”,@wjandrea?你不能简单地设置文件关联吗? - undefined
@ShadowRanger,这样做没有任何好处吗?也许你认为只需要一个shebang就足够了,但这在非POSIX操作系统上是行不通的。 - undefined
2
@RokeJulianLockhart: 1) 实际上,由于PEP 397 Python启动器的存在,shebang在Windows上确实可行。2) Python 2已经终止支持三年了,脚本区分Py2和Py3的时代即将结束。3) 对于模块来说,这个扩展名是100%无用的,因为.py3不是合法的模块扩展名,所以导入需要使用丑陋的解决方法。这个扩展名只适用于脚本。4) OP正在寻找一种区分他们的模块和其他已安装模块的方法。它们都是同一个Python版本,所以.py3是没有意义的,即使它能工作。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接