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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ifstream/ofstream について
-
ファイル名を複数個配列で確保...
-
Perlで特定行から特定行までを...
-
VBAで巨大なファイルの途中から...
-
chdirがうまくできない
-
VBAでCSVファイルの特定行を書...
-
fopenでディレクトリ内の全ファ...
-
ReadLineでの読み出し行を指定する
-
C言語で特定の行を抽出する方法...
-
MySQLにバイナリデータを正常に...
-
XML::Parserの parsefileの結果...
-
パスから最後のディレクトリだ...
-
Perl 特定のフォルダ以外削除
-
大容量テキストファイルから任...
-
Perl で syntax error
-
ExcelをCSV書き出す場合のシー...
-
空白文字 \\f と\\v の違いに...
-
perlのエディタでおすすめを教...
-
excel→txtファイル作成時、セル...
-
JSP URLに表示される拡張子 .jsp
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「パスが見つかりません」とい...
-
ファイル名を複数個配列で確保...
-
perlで先頭の数値をみて昇順に...
-
Perl エラーログを指定の場所...
-
Pythonでegrep機能をつかいたい
-
Visual Basicを使って三平方の...
-
perlでCSVをソートする方法につ...
-
ifstream を利用した1行分のテ...
-
Pythonで非日本語のUnicode文字...
-
perlプログラム 外部複数ファ...
-
Perlによるディレクトリ内の連...
-
system関数と引数について
-
C++でのテキストファイル読み込...
-
Perlのワンライナーをスクリプ...
-
バッチファイルでテキストファ...
-
Perl 重複カウント 上位3名
-
perlで指定範囲を複数ファイル...
-
perl 計算結果をファイルへ出力...
-
一行だけ読込
-
Fortranで1行飛ばして読み込む方法
おすすめ情報