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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

1149閲覧

Javaのプログラムと同じ内容をPythonで書きたい

pippip

総合スコア30

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2018/08/28 08:54

編集2018/08/28 08:54

#知りたいこと
下のJavaのプログラムをPythonで書きたいです。

java

1File f = new File("D:\デスクトップ\recipe"); 2if (f.isDirectory()) { 3 String[] fileList = f.list(); 4 for(int j = 0; j < fileList.length; j++ ){ 5 BufferedReader br = new BufferedReader(new FileReader(fileList[j])); 6 7 String line; 8 while((line = br.readLine()) != null{#なんらかの処理} 9 } 10}

Pythonではどのように書けばよいのでしょうか。
#試したこと
自分で調べて書いてみたのですが、ループが止まりませんでした。(#何らかの処理のところで、試しにprint("a")としたらaが出力され続けました。)
D:\デスクトップ\recipeのなかはcsvファイルがいくつかあります。

Python

1import os 2 3if os.path.isdir('D:\デスクトップ\recipe'): 4 fileList = os.listdir('D:\デスクトップ\recipe') 5 6 for j in range(len(fileList)): 7 f = open('D:\デスクトップ\recipe\'+fileList[j],'r',encoding='utf-8') 8 line = f.readlines() 9 10 while line is not None: 11 #何らかの処理

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

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

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

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

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

guest

回答2

0

ベストアンサー

ループが止まりませんでした。

ループの仕方に問題があります。
Javaの方法と違い、ループ内でlineは書き換えられません。

Python

line = f.readlines()
while line is not None:
# 何らかの処理

Pythonicに当該ループを実現するなら、次のように書くのが自然でしょう。

Python

1for line in f: 2 # 何らかの処理

また、os.pathではなくpathlibを使った方がよりモダンなコードになると思います。
Qiita - Python3.4以降ならos.pathはさっさと捨ててpathlibを使うべき

元のJavaコードもレガシーなのでなんとも甲乙付け難いですが...


Python

for j in range(len(fileList)):

間違いでは無いですが、ふつうはこのような書き方はしません。
タイムリーな記事が上がっていたので、リンクを貼っておきます。
Qiita - Pythonでプログラミングを始めよう! 〜for文の使い方〜

投稿2018/08/28 08:59

編集2018/08/28 09:34
LouiS0616

総合スコア35658

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

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

0

Pythonなど不要。そう、シェル芸ならね!

PowerShell

1PS> gci 'D:\デスクトップ\recipe' -File|%{gc -en UTF8 $_.FullName}|%{何らかの処理}

投稿2018/08/28 10:08

hichon

総合スコア5737

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問