小编Mon*_*ons的帖子

Python 3.7及以上版本:如何确定Linux发行版?

由于Python Docs明确指出platform.linux_distribution():

从版本3.5开始不推荐使用,将在3.7版中删除.

通过Python检测Linux发行版的正确和面向未来的方法是什么?

python linux python-3.x python-3.7

8
推荐指数
1
解决办法
1178
查看次数

Python 3:如何以随机顺序迭代大文件中的所有行(+1百万行)

好的,所以我有多个文本文件,每个文件包含超过500.000甚至1.000.000行.

目前我这样做:

import random

def line_function(line):
    # Do something with given line

def random_itteration(filepath):
    with open(filepath) as f:
        lines = f.readlines()
        random.shuffle(lines)
        for line in lines:
            result = line_function(line)
Run Code Online (Sandbox Code Playgroud)

问题是,在Python的文件random.shuffle()清楚地状态(我加的):

注意,即使对于小len(x),x的排列总数也可以快速增长,大于大多数随机数生成器的周期.这意味着永远不会产生长序列的大多数排列.例如,长度为2080的序列是可以在Mersenne Twister随机数生成器的周期内拟合的最大序列.

所以问题是:

什么是使我的设置按预期工作的最快和最有效的方法?

更多信息:

我有理由将line_function()应用于随机行,而不是简单地按照它们所处的顺序迭代它们.另请注意,我更倾向于只处理每一行一次.

最后,不幸的是,将文本文件预先混洗或将其分成较小的文件是不可取的.而不是我要问的.


任何见解都更受欢迎!Thnx提前了.

python random loops shuffle python-3.x

4
推荐指数
1
解决办法
314
查看次数

Python:如何从另一个模块调用方法?

我有 2 个用 python 编写的文件。main.py 看起来像这样:

import cats

class Dog():
    def __init__(self, name):
        self.name = name
    def talk(self):
        print("My name is "+self.name)

dog = Dog("Boxer")
cats.cat.talk()
Run Code Online (Sandbox Code Playgroud)

和 cats.py 看起来像这样:

class Cat():
    def __init__(self, name):
        self.name = name
    def talk(self):
        print("my name is "+self.name)
    def MakeDogTalk(self):
        dog.talk()
cat = Cat("pus")
cat.MakeDogTalk()
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在尝试让狗从猫模块中说话,有什么方法可以实现这一点吗?顺便说一句,我的现实世界应用程序看起来一点也不像这个......当然,现在我收到此错误:

line 9, in MakeDogTalk 
dog.talk()
NameError: name 'dog' is not defined
Run Code Online (Sandbox Code Playgroud)

python module

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×3

python-3.x ×2

linux ×1

loops ×1

module ×1

python-3.7 ×1

random ×1

shuffle ×1