[解決済み】TypeError: int() の引数は文字列、バイトのようなオブジェクト、または数値でなければならず、'list' ではありません。
2022-01-22 23:38:38
質問
ある関数を別の関数にパラメータとして渡すのに苦労しています。これは私のコードです。
ga.py:
def display_pageviews(hostname):
pageviews_results = get_pageviews_query(service, hostname).execute()
if pageviews_results.get('rows', []):
pv = pageviews_results.get('rows')
return pv[0]
else:
return None
def get_pageviews_query(service, hostname):
return service.data().ga().get(
ids=VIEW_ID,
start_date='7daysAgo',
end_date='today',
metrics='ga:pageviews',
sort='-ga:pageviews',
filters='ga:hostname==%s' % hostname,)
models.py。
class Stats(models.Model):
user = models.OneToOneField('auth.User')
views = models.IntegerField()
visits = models.IntegerField()
unique_visits = models.IntegerField()
updatestats.py。
class Command(BaseCommand):
def handle(self, *args, **options):
users = User.objects.all()
try:
for user in users:
hostname = '%s.%s' % (user.username, settings.NETWORK_DOMAIN)
stats = Stats.objects.update_or_create(
user=user,
views=display_pageviews(hostname),
visits=display_visits(hostname),
unique_visits=display_unique_visits(hostname),)
except FieldError:
print ('There was a field error.')
これを実行すると
python manage.py updatestats
エラーが出ます。
TypeError: int() の引数は、文字列、バイトのようなオブジェクト、または 数値であり、'list' ではありません。
何が原因かわからない。文字列に変換してみましたが、同じエラーが発生します。何か思い当たることはありますか?
完全なトレースバック。
Traceback (most recent call last):
File "manage.py", line 20, in <module>
execute_from_command_line(sys.argv)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/Users/myusername/project/Dev/project_files/project/main/management/commands/updatestats.py", line 23, in handle
unique_visits=display_unique_visits(hostname),)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/manager.py", line 122, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/query.py", line 480, in update_or_create
obj = self.get(**lookup)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/query.py", line 378, in get
clone = self.filter(*args, **kwargs)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/query.py", line 790, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/query.py", line 808, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1243, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1269, in _add_q
allow_joins=allow_joins, split_subq=split_subq,
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1203, in build_filter
condition = self.build_lookup(lookups, col, value)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1099, in build_lookup
return final_lookup(lhs, rhs)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/lookups.py", line 19, in __init__
self.rhs = self.get_prep_lookup()
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/lookups.py", line 57, in get_prep_lookup
return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1860, in get_prep_lookup
return super(IntegerField, self).get_prep_lookup(lookup_type, value)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 744, in get_prep_lookup
return self.get_prep_value(value)
File "/Users/myusername/project/Dev/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1854, in get_prep_value
return int(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
編集する
さてさて、何が問題なのか理解できました。シェルを使って関数の出力の型を取得しました。
>>> type(display_pageviews('test.domain.com'))
<class 'list'>
これでやってみましたが、やはりリストとみなされます。
pv = pageviews_results.get('rows')[0]
return pv
解決方法は?
このエラーが教えてくれるのは、リスト全体を整数に変換することはできない、ということです。リストからインデックスを取得して、それを整数に変換することは可能です。
x = ["0", "1", "2"]
y = int(x[0]) #accessing the zeroth element
リスト全体を整数に変換しようとすると、まずリストを文字列に変換することになります。
x = ["0", "1", "2"]
y = ''.join(x) # converting list into string
z = int(y)
リスト要素が文字列でない場合は、文字列に変換してから
str.join
:
x = [0, 1, 2]
y = ''.join(map(str, x))
z = int(y)
また、上記のように、ネストされたリストを返していないか確認してください。
関連
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] TypeError: Python3でファイルへの書き込み時に'str'ではなくbytesのようなオブジェクトが要求される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] インデックスを指定してリストから要素を削除する方法