質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2216閲覧

ファイルオブジェクトかどうかを判別する方法

kbskyotoshinbun

総合スコア1

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/28 14:29

if文を用いて、ファイルオブジェクトかどうかを判別したいのですが、どうやって文章を書いたらいいのでしょうか?

python

1def split_iterable(xs,y): 2 a=[] 3 j=0 4 b=[] 5 if len(xs) == 0: 6 a.append([]) 7 else: 8 for j in range(len(xs)): 9 if j != (len(xs)-1): 10 if xs[j] != y: 11 b.append(xs[j]) 12 else: 13 a.append(b) 14 b=[] 15 else: 16 a.append(b) 17 if xs[j] == y: 18 a.append([]) 19 else: 20 b.append(xs[j]) 21 return(a) 22with open('gokigenyou.txt', 'w', encoding='utf-8') as f: 23 f.write('こんにちは。\nごきげんよう。\n\nさようなら。\n') 24with open('gokigenyou.txt', 'r', encoding='utf-8') as g: 25 print(split_iterable(g, '\n') == [['こんにちは。\n', 'ごきげんよう。\n'], ['さようなら。\n']])

表示される結果をTrueにしたいと考えています。おそらくif文が必要かと思われますが、ファイルオブジェクトかどうかを判別するif文がわからないのでここで質問しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

取り敢えずファイルオブジェクトかどうかということなら

isinstance(オブジェクト,io.IOBase) でTrue/Falseが得られます。
※要 import io

なお、ファイルオブジェクトといっても色々あるので、基底の IOBase で判定してます。
参考: https://docs.python.org/ja/3.5/library/io.html#i-o-base-classes
なので、ファイルっぽいけどファイルじゃない StringIO もTrueと判定されますが…。そこが困るなら条件を追加するか、クラス名を変えるかして対応してください。

投稿2021/10/28 14:48

angel_p_57

総合スコア1681

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kbskyotoshinbun

2021/10/28 15:01

ありがとうございます。ioを導入したらうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問