흥분되는 동안 코드에 오류가 발생했습니다. 반복되는 객체로 시도했지만 운이 없습니다.
import os
import sys
class usernames(object):
def __init__(self, filename: str):
self.filename = filename
self.words = self.file_to_text
def file_to_text(self):
with open(self.filename, "r") as f:
name_list = [line.rstrip() for line in f]
return name_list
def main():
user_files = []
if os.path.isfile(sys.argv[1]):
filename = os.path.splitext(sys.argv[1])[-1].lower()
if filename.endswith('.txt'):
user_files.append(sys.argv[1])
for files in user_files:
test_name = usernames(files)
print(test_name)
for test in test_name:
print(test)
if __name__ == '__main__':
main()
python3 main.py test.txt
고양이 test.txt
알렉스
밥
존
그러나 이와 같은 오류가 발생합니다.
TypeError: "username' object is not iterable
예상 출력 :
알렉스
밥
존
__iter__
객체를 반복 가능하게 만드는 방법 을 제공해야합니다 .
import os
import sys
class usernames(object):
def __init__(self, filename: str):
self.filename = filename
self.words = self.file_to_text() # <<== needs parens to call method
def file_to_text(self):
with open(self.filename, "r") as f:
name_list = [line.rstrip() for line in f]
return name_list
def __iter__(self):
for word in self.words:
yield word
def main():
user_files = ['_test_data.txt']
# if os.path.isfile(sys.argv[1]):
# filename = os.path.splitext(sys.argv[1])[-1].lower()
# if filename.endswith('.txt'):
# user_files.append(sys.argv[1])
for files in user_files:
test_name = usernames(files)
for test in test_name:
print(test)
if __name__ == '__main__':
main()
Alex
bob
John
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다