同一个py程序,独立运行和在另一个py程序内运行结果不同?

独立的.py程序功能是正则匹配下维基百科一篇文章里的所有英文单词并给每个单词随机赋值,按序排列并去重后以字典的形式存储在txt文档里。
独立运行这个程序得到的是从a到z无重复的单词以及其权值,一共是1365个单词。

但是我用os.system("python filename.py")的形式嵌入在另一个py程序中运行后,结果单词并未排序,而且最终结果是1370个单词,多了,不明原因在哪?

文档储存为下图形式。
clipboard.png

import  re, random

f = open("fiename.txt")
try:
    text = f.read()     #读取整个文件并放入一个字符串变量中
    words = re.findall(r"\b[a-zA-Z]{2,50}\b", text)     #正则匹配所有英文单词得到一个列表
    results = []
    dictionary = {}
    for word in words:
        result = word.lower()     #将英文单词全部转为小写
        results.append(result)
    results = list(set(results))     #将匹配结果存储在列表里并用set函数去除重复单词
    results.sort()     #对列表排序
    for result in results:
        dictionary[result] = random.randint(0, 500)     #单词为字典的键,随机数为值,作为每个单词的权重
    print (dictionary)
    output = open("filename.txt","w")
    for key in dictionary:
        output.writelines(key + ":" + str(dictionary[key]) + "\n")     #字典内容写入文件
    output.close()
finally:
    f.close( )

代码如上,将这段代码不使用os.system而直接放到程序里运行,结果又是对的
//地址路径已处理

对得到的两个结果做了一下差集,发现多的5个单词为以下五个,不太懂其中的缘故:

clipboard.png

阅读 3.4k
2 个回答

可以放一下代码,还有文件位置关系之类的出来看看~

既然你萌python有module又推崇唯一解决方案的理念(c艹别转头, 说的就是你!), 那么直接import就行了啊, 或者用python官方提供的subprocess(这货是os.system的超集 啊)啊, 可能在mac上用os.system的心情就像c++里面踩到UB一样...
什么时候是在没办法再尝试os.system吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题