
Pythonの勉強を始めて4ヶ月ほどの者です。
今、コマンドライン(Winでのコマンドプロンプト、Linux系での端末など)からPythonでメールアドレスが書いてあるテキストを読み込み、そのアドレスにメールを送るプログラムを考えてます。
具体的には、address.txtというファイルに、
aaa.example@test.ne.jp
bbb.example@test.ne.jp
ccc.example@test.ne.jp
という風に記述してあるとします。(一行に一アドレスです。)
プログラムの部分(最初からではなく途中です)は、
print "Select the E-mail Address below"
a = open("Address.txt")
for i in a:
print i
to = raw_input(":")
とまできたんですが、自分としては読み込んだ「Address.txt」に書かれてるアドレスを行数ごとに指定して読み込みたいんです。つまりraw_input(":")に
1を入れたら1行目を指定→「aaa.example@test.ne.jp」
2を入れたら2行目を指定→「bbb.example@test.ne.jp」
3を入れたら3行目を指定→「ccc.example@test.ne.jp」
が選択されるようにし、変数toに代入されるようにしてSMTPモジュールのto_addrに引き渡すようにしたいのです。
ですが行数を指定してテキストを読み込むメゾットやオブジェクトが入ってるモジュールや関数はありますか?
Pythonは2.6.4と3.0.1の両方のバージョンが入ってます。できれば両方で動かしたいので3.0.1で仕様の変更があったら教えてもらえるとありがたいです。
OSはメインがWinXPSP3、サブ(テスト用、VMWare使用)にUbuntu9.04(Pythonは2.6系だったと思います。)
No.3
- 回答日時:
raw_inputは文字列を返すので、行数の指定や、配列の添字に使うにはint関数で整数型に変換する必要があります。
#その前に、正しい入力かどうかを確認するとよいでしょう
#例) if not re.match(r"\s*\d+",to) : #数値じゃなかったらエラー
ito=int(to)
全部の行を読み込むなら file.readlinesが便利かも。
a = open("Address.txt")
lines=a.readlines()
a.close() #開いたら閉じましょう
addr=lines[ito-1] #1行目の添字は0,ito行目はito-1
あるいは
# 2.6以降なら、with文が便利
with open("Address.txt") as a:
lines=a.readlines()
addr=lines[ito-1]
必要な行だけ読みたいなら、それまでの行を空読みします
with open("Address.txt") as a:
for i in xrange(ito-1): a.readlines()
addr=a.readline()
No.1
- 回答日時:
ストリームからはreadlineで1行読み込めるので、ループで指定された行数読み込んで最後の行を利用する。
ストリームの性質を考えると、行数を指定して読み込めるメソッドがあっても上記のような実装になっていると思う。
あと質問のコードだとアドレス一覧を表示するために一度全部読み込んでいるようだけど、そのようにするなら読込み時に行ごとに配列に入れておけば指定行へのアクセスは簡単だね。
すばやい返事ありがとうございます!
正直まだわからないところがあるのですが、
>あと質問のコードだとアドレス一覧を表示するために一度全部読み込んでいるようだけど、そのようにするなら読込み時に行ごとに配列に入れておけば指定行へのアクセスは簡単だね。
というのがまだわからずにいます。読み込む行ごとに配列を入れるのはどうすればいいのですか?質問に質問を重ねてすいません…
自分でも調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- システム ホームページの仕組みについて 3 2022/08/16 14:33
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- C言語・C++・C# pythonで外部のファイルを読み込む際のエラー 2 2022/04/12 19:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ディスク残量が無くなってしま...
-
dataファイルの特定の行から特...
-
シュワルツ変換の不具合
-
繰り返しファイルをアップロー...
-
テキストファイルの編集
-
あるファイルないから日付指定...
-
2つ質問があり、まず1つ目な...
-
データ項目の並び替えについて
-
レコードの書込み判断
-
cgiでdocument.writeの書き出し
-
perl で作成された文書と知るに...
-
どのようなプログラムをつくれ...
-
データファイルからのデータの...
-
ファイルの削除について
-
あるURLがファイルなのかディレ...
-
パスから最後のディレクトリだ...
-
linuxのperlでWindowsファイル...
-
Perl→exe
-
フォルダに入っているファイル...
-
ListBoxのデータを高速でファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ifstream を利用した1行分のテ...
-
***.cgiの中身は第三者から見ら...
-
ファイル名を複数個配列で確保...
-
C++でのテキストファイル読み込...
-
ファイル名に日付を入れてアッ...
-
「パスが見つかりません」とい...
-
VBSの処理について
-
perlで該当する行のみ別ファイ...
-
特定のデータを更新する
-
perl での文章の取得について
-
今、「Python 3.8 32-bit」を使っ...
-
shellのコマンド deffの差分の...
-
perlで先頭の数値をみて昇順に...
-
ファイル読み込みマッチングに...
-
テキストファイルの各行を配列...
-
テキストファイルになにも入っ...
-
一行だけ読込
-
ファイル操作
-
ファイルから検索条件を読み込...
-
perlでCSVをソートする方法につ...
おすすめ情報