我正在尝试编写一个简单的字符串工具来生成随机字符串。
我在string.py
目录中有utils
,其代码如下:
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.py
更改为strings.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
答案 0 :(得分:2)
当然!
请注意,每个目录级别都需要这些 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))
答案 1 :(得分:0)
您应该尝试创建一个package,例如pk_utils或utils,并且string可以是您软件包中的模块/类之一。
在utils目录中创建stage('A'){
agent{docker{image A}}
when{branch = 'master'}
step{do blah}
}
stage('B'){
when{branch = 'master'}
agent{docker{image B}}
step{do blah}
}
之后-
__init__.py
在您的代码中-
#!/usr/bin/env python
__all__ = [ "string" ]