与标准库中的模块同名并且也需要导入相同模块的模块

pk028382

我正在尝试编写一个简单的字符串 util 来生成随机字符串。

string.pyutils目录中有以下代码:

import string
import random


def generate_random_letters(str_len: int) -> str:
    return ''.join(random.choice(string.ascii_letters) for _ in range(str_len))

我在交互式控制台中尝试过...

>>> from string import generate_random_letters
>>> generate_random_letters(10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "xxx\app\utils\string.py", line 6, in generate_random_letters
    return ''.join(random.choice(string.ascii_letters) for _ in range(str_len))
  File "xxx\app\utils\string.py", line 6, in <genexpr>
    return ''.join(random.choice(string.ascii_letters) for _ in range(str_len))
AttributeError: module 'string' has no attribute 'ascii_letters'

我尝试更改string.pystrings.py并且它有效。所以冲突的名字是第一个原因

我也尝试删除import string并简单地做

return ''

它有效。所以这是第二个原因。

我的目标是做

import app.utils.string as string_util
string_util.generate_random_letters(10)

在python3.7中可能吗?

如果不可能,我肯定需要更改文件名。

但是也请随时为这样的特定案例建议任何好名字 但是,老实说,我认为以下任何一个都不是好的

_string.py, my_string.py,string_util.py

乐汗9

当然!

您可以使用以下目录结构执行此操作: 在此处输入图片说明

请注意,每个目录级别都需要这些init .py 文件。

我的 string.py 代码与你的匹配:

import string
import random


def generate_random_letters(str_len: int) -> str:
    return ''.join(random.choice(string.ascii_letters) for _ in range(str_len))

我的 aa_test_me.py 代码:

import app.utils.string as string_util

print (string_util.generate_random_letters(10))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章